SearchReplaceWidget: changed the regexp search to use QScintilla's POSIX mode

Thu, 01 Nov 2018 18:46:44 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Thu, 01 Nov 2018 18:46:44 +0100
changeset 6573
ccac2d1f6858
parent 6572
dd7ed346b052
child 6574
c13af8becbf4

SearchReplaceWidget: changed the regexp search to use QScintilla's POSIX mode
Shell: added search capability with regular expressions using QScintilla's POSIX mode
LogViewer: added search capability with regular expressions (Qt >= 5.3.0)

APIs/Python3/eric6.api file | annotate | diff | comparison | revisions
Documentation/Help/source.qch file | annotate | diff | comparison | revisions
Documentation/Source/eric6.QScintilla.Shell.html file | annotate | diff | comparison | revisions
Documentation/Source/eric6.UI.LogView.html file | annotate | diff | comparison | revisions
Documentation/Source/eric6.UI.SearchWidget.html file | annotate | diff | comparison | revisions
QScintilla/SearchReplaceWidget.py file | annotate | diff | comparison | revisions
QScintilla/Shell.py file | annotate | diff | comparison | revisions
UI/LogView.py file | annotate | diff | comparison | revisions
UI/SearchWidget.py file | annotate | diff | comparison | revisions
UI/SearchWidget.ui file | annotate | diff | comparison | revisions
UI/SearchWidgetLine.ui file | annotate | diff | comparison | revisions
changelog file | annotate | diff | comparison | revisions
i18n/eric6_cs.ts file | annotate | diff | comparison | revisions
i18n/eric6_de.ts file | annotate | diff | comparison | revisions
i18n/eric6_empty.ts file | annotate | diff | comparison | revisions
i18n/eric6_en.ts file | annotate | diff | comparison | revisions
i18n/eric6_es.ts file | annotate | diff | comparison | revisions
i18n/eric6_fr.ts file | annotate | diff | comparison | revisions
i18n/eric6_it.ts file | annotate | diff | comparison | revisions
i18n/eric6_pt.ts file | annotate | diff | comparison | revisions
i18n/eric6_ru.ts file | annotate | diff | comparison | revisions
i18n/eric6_tr.ts file | annotate | diff | comparison | revisions
i18n/eric6_zh_CN.ts file | annotate | diff | comparison | revisions
--- a/APIs/Python3/eric6.api	Thu Nov 01 15:43:03 2018 +0100
+++ b/APIs/Python3/eric6.api	Thu Nov 01 18:46:44 2018 +0100
@@ -9210,8 +9210,8 @@
 eric6.QScintilla.Shell.Shell.queueText?7
 eric6.QScintilla.Shell.Shell.reloadHistory?4()
 eric6.QScintilla.Shell.Shell.saveHistory?4(clientType)
-eric6.QScintilla.Shell.Shell.searchNext?4(txt, caseSensitive, wholeWord)
-eric6.QScintilla.Shell.Shell.searchPrev?4(txt, caseSensitive, wholeWord)
+eric6.QScintilla.Shell.Shell.searchNext?4(txt, caseSensitive, wholeWord, regexp)
+eric6.QScintilla.Shell.Shell.searchPrev?4(txt, caseSensitive, wholeWord, regexp)
 eric6.QScintilla.Shell.Shell.searchStringFound?7
 eric6.QScintilla.Shell.Shell.selectHistory?4()
 eric6.QScintilla.Shell.Shell.setDebuggerUI?4(ui)
@@ -9825,8 +9825,8 @@
 eric6.UI.LogView.LogViewerEdit.appendToStdout?4(txt)
 eric6.UI.LogView.LogViewerEdit.keyPressEvent?4(evt)
 eric6.UI.LogView.LogViewerEdit.preferencesChanged?4()
-eric6.UI.LogView.LogViewerEdit.searchNext?4(txt, caseSensitive, wholeWord)
-eric6.UI.LogView.LogViewerEdit.searchPrev?4(txt, caseSensitive, wholeWord)
+eric6.UI.LogView.LogViewerEdit.searchNext?4(txt, caseSensitive, wholeWord, regexp)
+eric6.UI.LogView.LogViewerEdit.searchPrev?4(txt, caseSensitive, wholeWord, regexp)
 eric6.UI.LogView.LogViewerEdit.searchStringFound?7
 eric6.UI.LogView.LogViewerEdit?1(parent=None)
 eric6.UI.NotificationWidget.NotificationWidget.mouseMoveEvent?4(evt)
@@ -9903,7 +9903,7 @@
 eric6.UI.SearchWidget.SearchWidget.searchPrevious?7
 eric6.UI.SearchWidget.SearchWidget.searchStringFound?4(found)
 eric6.UI.SearchWidget.SearchWidget.showFind?4(txt="")
-eric6.UI.SearchWidget.SearchWidget?1(mainWindow, parent=None, spacer=True, showLine=False)
+eric6.UI.SearchWidget.SearchWidget?1(mainWindow, parent=None, spacer=True, showLine=False, hideRegExp=False)
 eric6.UI.SplashScreen.NoneSplashScreen.clearMessage?4()
 eric6.UI.SplashScreen.NoneSplashScreen.finish?4(widget)
 eric6.UI.SplashScreen.NoneSplashScreen.showMessage?4(msg)
Binary file Documentation/Help/source.qch has changed
--- a/Documentation/Source/eric6.QScintilla.Shell.html	Thu Nov 01 15:43:03 2018 +0100
+++ b/Documentation/Source/eric6.QScintilla.Shell.html	Thu Nov 01 18:46:44 2018 +0100
@@ -1455,39 +1455,45 @@
 </dd>
 </dl><a NAME="Shell.searchNext" ID="Shell.searchNext"></a>
 <h4>Shell.searchNext</h4>
-<b>searchNext</b>(<i>txt, caseSensitive, wholeWord</i>)
+<b>searchNext</b>(<i>txt, caseSensitive, wholeWord, regexp</i>)
 <p>
         Public method to search the next occurrence of the given text.
 </p><dl>
-<dt><i>txt</i></dt>
+<dt><i>txt</i> (str)</dt>
 <dd>
-text to search for (string)
-</dd><dt><i>caseSensitive</i></dt>
+text to search for
+</dd><dt><i>caseSensitive</i> (bool)</dt>
 <dd>
 flag indicating to perform a case sensitive
-            search (boolean)
-</dd><dt><i>wholeWord</i></dt>
+            search
+</dd><dt><i>wholeWord</i> (bool)</dt>
 <dd>
 flag indicating to search for whole words
-            only (boolean)
+            only
+</dd><dt><i>regexp</i> (bool)</dt>
+<dd>
+flag indicating a regular expression search
 </dd>
 </dl><a NAME="Shell.searchPrev" ID="Shell.searchPrev"></a>
 <h4>Shell.searchPrev</h4>
-<b>searchPrev</b>(<i>txt, caseSensitive, wholeWord</i>)
+<b>searchPrev</b>(<i>txt, caseSensitive, wholeWord, regexp</i>)
 <p>
         Public method to search the previous occurrence of the given text.
 </p><dl>
-<dt><i>txt</i></dt>
+<dt><i>txt</i> (str)</dt>
 <dd>
-text to search for (string)
-</dd><dt><i>caseSensitive</i></dt>
+text to search for
+</dd><dt><i>caseSensitive</i> (bool)</dt>
 <dd>
 flag indicating to perform a case sensitive
-            search (boolean)
-</dd><dt><i>wholeWord</i></dt>
+            search
+</dd><dt><i>wholeWord</i> (bool)</dt>
 <dd>
 flag indicating to search for whole words
-            only (boolean)
+            only
+</dd><dt><i>regexp</i> (bool)</dt>
+<dd>
+flag indicating a regular expression search
 </dd>
 </dl><a NAME="Shell.selectHistory" ID="Shell.selectHistory"></a>
 <h4>Shell.selectHistory</h4>
--- a/Documentation/Source/eric6.UI.LogView.html	Thu Nov 01 15:43:03 2018 +0100
+++ b/Documentation/Source/eric6.UI.LogView.html	Thu Nov 01 18:46:44 2018 +0100
@@ -307,35 +307,45 @@
         Public slot to handle a change of the preferences.
 </p><a NAME="LogViewerEdit.searchNext" ID="LogViewerEdit.searchNext"></a>
 <h4>LogViewerEdit.searchNext</h4>
-<b>searchNext</b>(<i>txt, caseSensitive, wholeWord</i>)
+<b>searchNext</b>(<i>txt, caseSensitive, wholeWord, regexp</i>)
 <p>
         Public method to search the next occurrence of the given text.
 </p><dl>
-<dt><i>txt</i></dt>
+<dt><i>txt</i> (str)</dt>
 <dd>
-text to search for (string)
-</dd><dt><i>caseSensitive</i></dt>
+text to search for
+</dd><dt><i>caseSensitive</i> (bool)</dt>
 <dd>
-flag indicating case sensitivity (boolean)
-</dd><dt><i>wholeWord</i></dt>
+flag indicating to perform a case sensitive
+            search
+</dd><dt><i>wholeWord</i> (bool)</dt>
 <dd>
-flag indicating a search for the whole word (boolean)
+flag indicating to search for whole words
+            only
+</dd><dt><i>regexp</i> (bool)</dt>
+<dd>
+flag indicating a regular expression search
 </dd>
 </dl><a NAME="LogViewerEdit.searchPrev" ID="LogViewerEdit.searchPrev"></a>
 <h4>LogViewerEdit.searchPrev</h4>
-<b>searchPrev</b>(<i>txt, caseSensitive, wholeWord</i>)
+<b>searchPrev</b>(<i>txt, caseSensitive, wholeWord, regexp</i>)
 <p>
         Public method to search the previous occurrence of the given text.
 </p><dl>
-<dt><i>txt</i></dt>
+<dt><i>txt</i> (str)</dt>
 <dd>
-text to search for (string)
-</dd><dt><i>caseSensitive</i></dt>
+text to search for
+</dd><dt><i>caseSensitive</i> (bool)</dt>
 <dd>
-flag indicating case sensitivity (boolean)
-</dd><dt><i>wholeWord</i></dt>
+flag indicating to perform a case sensitive
+            search
+</dd><dt><i>wholeWord</i> (bool)</dt>
 <dd>
-flag indicating a search for the whole word (boolean)
+flag indicating to search for whole words
+            only
+</dd><dt><i>regexp</i> (bool)</dt>
+<dd>
+flag indicating a regular expression search
 </dd>
 </dl>
 <div align="right"><a href="#top">Up</a></div>
--- a/Documentation/Source/eric6.UI.SearchWidget.html	Thu Nov 01 15:43:03 2018 +0100
+++ b/Documentation/Source/eric6.UI.SearchWidget.html	Thu Nov 01 18:46:44 2018 +0100
@@ -45,14 +45,14 @@
     Class implementing the search box for the shell, terminal and log viewer.
 </p><h3>Signals</h3>
 <dl>
-<dt>searchNext(text, caseSensitive, wholeWord)</dt>
-<dd>
-emitted when the user
-        pressed the next button (string, boolean, boolean)
-</dd><dt>searchPrevious(text, caseSensitive, wholeWord)</dt>
+<dt>searchNext(text, caseSensitive, wholeWord, regexp)</dt>
 <dd>
 emitted when the
-        user pressed the previous button (string, boolean, boolean)
+        user pressed the next button (string, boolean, boolean)
+</dd><dt>searchPrevious(text, caseSensitive, wholeWord, regexp)</dt>
+<dd>
+emitted when
+        the user pressed the previous button (string, boolean, boolean)
 </dd>
 </dl>
 <h3>Derived from</h3>
@@ -105,23 +105,26 @@
 </table>
 <a NAME="SearchWidget.__init__" ID="SearchWidget.__init__"></a>
 <h4>SearchWidget (Constructor)</h4>
-<b>SearchWidget</b>(<i>mainWindow, parent=None, spacer=True, showLine=False</i>)
+<b>SearchWidget</b>(<i>mainWindow, parent=None, spacer=True, showLine=False, hideRegExp=False</i>)
 <p>
         Constructor
 </p><dl>
-<dt><i>mainWindow</i></dt>
+<dt><i>mainWindow</i> (QWidget)</dt>
 <dd>
-reference to the main window (QWidget)
-</dd><dt><i>parent</i></dt>
+reference to the main window
+</dd><dt><i>parent</i> (QWidget)</dt>
 <dd>
-reference to the parent widget (QWidget)
-</dd><dt><i>spacer</i></dt>
+reference to the parent widget
+</dd><dt><i>spacer</i> (bool)</dt>
 <dd>
 flag indicating to add a vertical spacer to the
-            main layout (boolean)
-</dd><dt><i>showLine</i></dt>
+            main layout
+</dd><dt><i>showLine</i> (bool)</dt>
 <dd>
-flag indicating to show all widget in one row (boolean)
+flag indicating to show all widget in one row
+</dd><dt><i>hideRegExp</i> (bool)</dt>
+<dd>
+flag indicating to hide the Regexp checkbox
 </dd>
 </dl><a NAME="SearchWidget.__findByReturnPressed" ID="SearchWidget.__findByReturnPressed"></a>
 <h4>SearchWidget.__findByReturnPressed</h4>
--- a/QScintilla/SearchReplaceWidget.py	Thu Nov 01 15:43:03 2018 +0100
+++ b/QScintilla/SearchReplaceWidget.py	Thu Nov 01 18:46:44 2018 +0100
@@ -23,6 +23,7 @@
 import UI.PixmapCache
 
 
+# TODO: add support for more POSIX like regexp support of QScintilla
 class SearchReplaceWidget(QWidget):
     """
     Class implementing the search and replace widget.
@@ -80,14 +81,14 @@
         whatsThis += self.tr(
             """<table border="0">
 <tr><td><code>.</code></td><td>Matches any character</td></tr>
-<tr><td><code>\\(</code></td><td>This marks the start of a region for tagging a
+<tr><td><code>(</code></td><td>This marks the start of a region for tagging a
 match.</td></tr>
-<tr><td><code>\\)</code></td><td>This marks the end of a tagged region.
+<tr><td><code>)</code></td><td>This marks the end of a tagged region.
 </td></tr>
 <tr><td><code>\\n</code></td>
 <td>Where <code>n</code> is 1 through 9 refers to the first through ninth
 tagged region when replacing. For example, if the search string was
-<code>Fred\\([1-9]\\)XXX</code> and the replace string was
+<code>Fred([1-9])XXX</code> and the replace string was
 <code>Sam\\1YYY</code>, when applied to <code>Fred2XXX</code> this would
 generate <code>Sam2YYY</code>.</td></tr>
 <tr><td><code>\\&lt;</code></td>
@@ -548,7 +549,8 @@
                 self.ui.wordCheckBox.isChecked(),
                 self.ui.wrapCheckBox.isChecked(),
                 not backwards,
-                line, index)
+                line, index,
+                posix=self.ui.regexpCheckBox.isChecked())
         
         if ok and self.ui.selectionCheckBox.isChecked():
             lineFrom, indexFrom, lineTo, indexTo = aw.getSelection()
@@ -599,7 +601,8 @@
                         self.ui.wordCheckBox.isChecked(),
                         self.ui.wrapCheckBox.isChecked(),
                         not backwards,
-                        line, index)
+                        line, index,
+                        posix=self.ui.regexpCheckBox.isChecked())
                     if ok:
                         lineFrom, indexFrom, lineTo, indexTo = \
                             aw.getSelection()
@@ -625,7 +628,8 @@
                         self.ui.wordCheckBox.isChecked(),
                         self.ui.wrapCheckBox.isChecked(),
                         not backwards,
-                        line, index)
+                        line, index,
+                        posix=self.ui.regexpCheckBox.isChecked())
                     if ok:
                         lineFrom, indexFrom, lineTo, indexTo = \
                             aw.getSelection()
@@ -842,7 +846,8 @@
             self.ui.regexpCheckBox.isChecked(),
             self.ui.caseCheckBox.isChecked(),
             self.ui.wordCheckBox.isChecked(),
-            False, True, line, index)
+            False, True, line, index,
+            posix=self.ui.regexpCheckBox.isChecked())
         
         if ok and self.ui.selectionCheckBox.isChecked():
             lineFrom, indexFrom, lineTo, indexTo = aw.getSelection()
@@ -881,7 +886,8 @@
                         self.ui.regexpCheckBox.isChecked(),
                         self.ui.caseCheckBox.isChecked(),
                         self.ui.wordCheckBox.isChecked(),
-                        False, True, line, index)
+                        False, True, line, index,
+                        posix=self.ui.regexpCheckBox.isChecked())
                     if ok:
                         lineFrom, indexFrom, lineTo, indexTo = \
                             aw.getSelection()
--- a/QScintilla/Shell.py	Thu Nov 01 15:43:03 2018 +0100
+++ b/QScintilla/Shell.py	Thu Nov 01 18:46:44 2018 +0100
@@ -2143,19 +2143,25 @@
         if self.__lastSearch:
             self.searchNext(*self.__lastSearch)
     
-    def searchNext(self, txt, caseSensitive, wholeWord):
+    def searchNext(self, txt, caseSensitive, wholeWord, regexp):
         """
         Public method to search the next occurrence of the given text.
         
-        @param txt text to search for (string)
+        @param txt text to search for
+        @type str
         @param caseSensitive flag indicating to perform a case sensitive
-            search (boolean)
+            search
+        @type bool
         @param wholeWord flag indicating to search for whole words
-            only (boolean)
+            only
+        @type bool
+        @param regexp flag indicating a regular expression search
+        @type bool
         """
-        self.__lastSearch = (txt, caseSensitive, wholeWord)
+        self.__lastSearch = (txt, caseSensitive, wholeWord, regexp)
         ok = self.findFirst(
-            txt, False, caseSensitive, wholeWord, True, forward=True)
+            txt, regexp, caseSensitive, wholeWord, True, forward=True,
+            posix=regexp)
         self.searchStringFound.emit(ok)
     
     def __searchPrev(self):
@@ -2165,24 +2171,29 @@
         if self.__lastSearch:
             self.searchPrev(*self.__lastSearch)
     
-    def searchPrev(self, txt, caseSensitive, wholeWord):
+    def searchPrev(self, txt, caseSensitive, wholeWord, regexp):
         """
         Public method to search the previous occurrence of the given text.
         
-        @param txt text to search for (string)
+        @param txt text to search for
+        @type str
         @param caseSensitive flag indicating to perform a case sensitive
-            search (boolean)
+            search
+        @type bool
         @param wholeWord flag indicating to search for whole words
-            only (boolean)
+            only
+        @type bool
+        @param regexp flag indicating a regular expression search
+        @type bool
         """
-        self.__lastSearch = (txt, caseSensitive, wholeWord)
+        self.__lastSearch = (txt, caseSensitive, wholeWord, regexp)
         if self.hasSelectedText():
             line, index = self.getSelection()[:2]
         else:
             line, index = -1, -1
         ok = self.findFirst(
-            txt, False, caseSensitive, wholeWord, True,
-            forward=False, line=line, index=index)
+            txt, regexp, caseSensitive, wholeWord, True,
+            forward=False, line=line, index=index, posix=regexp)
         self.searchStringFound.emit(ok)
     
     def historyStyle(self):
--- a/UI/LogView.py	Thu Nov 01 15:43:03 2018 +0100
+++ b/UI/LogView.py	Thu Nov 01 18:46:44 2018 +0100
@@ -9,13 +9,15 @@
 
 from __future__ import unicode_literals
 
-from PyQt5.QtCore import Qt, pyqtSignal
+from PyQt5.QtCore import pyqtSignal, Qt, QRegExp
 from PyQt5.QtGui import QBrush, QTextCursor, QTextDocument
 from PyQt5.QtWidgets import QTextEdit, QApplication, QMenu, QWidget, \
     QHBoxLayout, QSizePolicy
 
 from E5Gui.E5Application import e5App
 
+from Globals import qVersionTuple
+
 import UI.PixmapCache
 import Preferences
 import Utilities
@@ -40,9 +42,10 @@
         
         self.__logViewer = LogViewerEdit(self)
         from .SearchWidget import SearchWidget
-        self.__searchWidget = SearchWidget(self.__logViewer, self)
-        self.__searchWidget.setSizePolicy(QSizePolicy.Fixed,
-                                          QSizePolicy.Preferred)
+        self.__searchWidget = SearchWidget(
+            self.__logViewer, self, hideRegExp=qVersionTuple() < (5, 3, 0))
+        self.__searchWidget.setSizePolicy(
+            QSizePolicy.Fixed, QSizePolicy.Preferred)
         self.__searchWidget.hide()
         
         self.__layout = QHBoxLayout(self)
@@ -236,38 +239,66 @@
         txt = self.textCursor().selectedText()
         self.__mainWindow.showFind(txt)
         
-    def searchNext(self, txt, caseSensitive, wholeWord):
+    def searchNext(self, txt, caseSensitive, wholeWord, regexp):
         """
         Public method to search the next occurrence of the given text.
         
-        @param txt text to search for (string)
-        @param caseSensitive flag indicating case sensitivity (boolean)
-        @param wholeWord flag indicating a search for the whole word (boolean)
+        @param txt text to search for
+        @type str
+        @param caseSensitive flag indicating to perform a case sensitive
+            search
+        @type bool
+        @param wholeWord flag indicating to search for whole words
+            only
+        @type bool
+        @param regexp flag indicating a regular expression search
+        @type bool
         """
-        self.__lastSearch = (txt, caseSensitive, wholeWord)
+        self.__lastSearch = (txt, caseSensitive, wholeWord, regexp)
         flags = QTextDocument.FindFlags()
         if caseSensitive:
             flags |= QTextDocument.FindCaseSensitively
         if wholeWord:
             flags |= QTextDocument.FindWholeWords
-        ok = self.find(txt, flags)
+        if regexp:
+            ok = self.find(QRegExp(
+                txt,
+                Qt.CaseSensitive if caseSensitive else Qt.CaseInsensitive),
+                flags
+            )
+        else:
+            ok = self.find(txt, flags)
         self.searchStringFound.emit(ok)
         
-    def searchPrev(self, txt, caseSensitive, wholeWord):
+    def searchPrev(self, txt, caseSensitive, wholeWord, regexp):
         """
         Public method to search the previous occurrence of the given text.
         
-        @param txt text to search for (string)
-        @param caseSensitive flag indicating case sensitivity (boolean)
-        @param wholeWord flag indicating a search for the whole word (boolean)
+        @param txt text to search for
+        @type str
+        @param caseSensitive flag indicating to perform a case sensitive
+            search
+        @type bool
+        @param wholeWord flag indicating to search for whole words
+            only
+        @type bool
+        @param regexp flag indicating a regular expression search
+        @type bool
         """
-        self.__lastSearch = (txt, caseSensitive, wholeWord)
+        self.__lastSearch = (txt, caseSensitive, wholeWord, regexp)
         flags = QTextDocument.FindFlags(QTextDocument.FindBackward)
         if caseSensitive:
             flags |= QTextDocument.FindCaseSensitively
         if wholeWord:
             flags |= QTextDocument.FindWholeWords
-        ok = self.find(txt, flags)
+        if regexp:
+            ok = self.find(QRegExp(
+                txt,
+                Qt.CaseSensitive if caseSensitive else Qt.CaseInsensitive),
+                flags
+            )
+        else:
+            ok = self.find(txt, flags)
         self.searchStringFound.emit(ok)
         
     def keyPressEvent(self, evt):
--- a/UI/SearchWidget.py	Thu Nov 01 15:43:03 2018 +0100
+++ b/UI/SearchWidget.py	Thu Nov 01 18:46:44 2018 +0100
@@ -19,23 +19,30 @@
     """
     Class implementing the search box for the shell, terminal and log viewer.
     
-    @signal searchNext(text, caseSensitive, wholeWord) emitted when the user
-        pressed the next button (string, boolean, boolean)
-    @signal searchPrevious(text, caseSensitive, wholeWord) emitted when the
-        user pressed the previous button (string, boolean, boolean)
+    @signal searchNext(text, caseSensitive, wholeWord, regexp) emitted when the
+        user pressed the next button (string, boolean, boolean)
+    @signal searchPrevious(text, caseSensitive, wholeWord, regexp) emitted when
+        the user pressed the previous button (string, boolean, boolean)
     """
-    searchNext = pyqtSignal(str, bool, bool)
-    searchPrevious = pyqtSignal(str, bool, bool)
+    searchNext = pyqtSignal(str, bool, bool, bool)
+    searchPrevious = pyqtSignal(str, bool, bool, bool)
     
-    def __init__(self, mainWindow, parent=None, spacer=True, showLine=False):
+    def __init__(self, mainWindow, parent=None, spacer=True, showLine=False,
+                 hideRegExp=False):
         """
         Constructor
         
-        @param mainWindow reference to the main window (QWidget)
-        @param parent reference to the parent widget (QWidget)
+        @param mainWindow reference to the main window
+        @type QWidget
+        @param parent reference to the parent widget
+        @type QWidget
         @param spacer flag indicating to add a vertical spacer to the
-            main layout (boolean)
-        @param showLine flag indicating to show all widget in one row (boolean)
+            main layout
+        @type bool
+        @param showLine flag indicating to show all widget in one row
+        @type bool
+        @param hideRegExp flag indicating to hide the Regexp checkbox
+        @type bool
         """
         super(SearchWidget, self).__init__(parent)
         
@@ -46,6 +53,11 @@
             from .Ui_SearchWidget import Ui_SearchWidget
             self.__ui = Ui_SearchWidget()
         self.__ui.setupUi(self)
+        
+        if hideRegExp:
+            self.__ui.regexpCheckBox.setChecked(False)
+            self.__ui.regexpCheckBox.hide()
+        
         if not showLine:
             if spacer:
                 spacerItem = QSpacerItem(
@@ -118,7 +130,9 @@
         self.searchNext.emit(
             txt,
             self.__ui.caseCheckBox.isChecked(),
-            self.__ui.wordCheckBox.isChecked())
+            self.__ui.wordCheckBox.isChecked(),
+            self.__ui.regexpCheckBox.isChecked(),
+        )
     
     @pyqtSlot()
     def on_findPrevButton_clicked(self):
@@ -143,7 +157,9 @@
         self.searchPrevious.emit(
             txt,
             self.__ui.caseCheckBox.isChecked(),
-            self.__ui.wordCheckBox.isChecked())
+            self.__ui.wordCheckBox.isChecked(),
+            self.__ui.regexpCheckBox.isChecked(),
+        )
     
     @pyqtSlot(str)
     def on_findtextCombo_editTextChanged(self, txt):
--- a/UI/SearchWidget.ui	Thu Nov 01 15:43:03 2018 +0100
+++ b/UI/SearchWidget.ui	Thu Nov 01 18:46:44 2018 +0100
@@ -6,7 +6,7 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>274</width>
+    <width>278</width>
     <height>142</height>
    </rect>
   </property>
@@ -88,6 +88,13 @@
        </property>
       </widget>
      </item>
+     <item>
+      <widget class="QCheckBox" name="regexpCheckBox">
+       <property name="text">
+        <string>Regexp</string>
+       </property>
+      </widget>
+     </item>
     </layout>
    </item>
    <item>
@@ -153,6 +160,7 @@
   <tabstop>findtextCombo</tabstop>
   <tabstop>caseCheckBox</tabstop>
   <tabstop>wordCheckBox</tabstop>
+  <tabstop>regexpCheckBox</tabstop>
   <tabstop>findPrevButton</tabstop>
   <tabstop>findNextButton</tabstop>
   <tabstop>closeButton</tabstop>
--- a/UI/SearchWidgetLine.ui	Thu Nov 01 15:43:03 2018 +0100
+++ b/UI/SearchWidgetLine.ui	Thu Nov 01 18:46:44 2018 +0100
@@ -6,7 +6,7 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>550</width>
+    <width>606</width>
     <height>52</height>
    </rect>
   </property>
@@ -105,6 +105,13 @@
        </property>
       </widget>
      </item>
+     <item>
+      <widget class="QCheckBox" name="regexpCheckBox">
+       <property name="text">
+        <string>Regexp</string>
+       </property>
+      </widget>
+     </item>
     </layout>
    </item>
    <item>
@@ -123,8 +130,9 @@
   <tabstop>findtextCombo</tabstop>
   <tabstop>caseCheckBox</tabstop>
   <tabstop>wordCheckBox</tabstop>
+  <tabstop>regexpCheckBox</tabstop>
+  <tabstop>findPrevButton</tabstop>
   <tabstop>findNextButton</tabstop>
-  <tabstop>findPrevButton</tabstop>
   <tabstop>closeButton</tabstop>
  </tabstops>
  <resources/>
--- a/changelog	Thu Nov 01 15:43:03 2018 +0100
+++ b/changelog	Thu Nov 01 18:46:44 2018 +0100
@@ -2,6 +2,15 @@
 ----------
 Version 18.12:
 - bug fixes
+- Editor
+  -- changed the 'Regexp' search option to use QScintilla's POSIX mode, where
+     ( and ) are used for tagging (instead of \( and \))
+- LogViewer
+  -- added the capability to search for a regular expression (Qt >= 5.3.0
+     is required for this)
+- Shell, ShellWindow
+  -- added the capability to search for a regular expression with QScintilla's
+     POSIX mode
 
 Version 18.11:
 - bug fixes
--- a/i18n/eric6_cs.ts	Thu Nov 01 15:43:03 2018 +0100
+++ b/i18n/eric6_cs.ts	Thu Nov 01 18:46:44 2018 +0100
@@ -45112,27 +45112,27 @@
 <context>
     <name>LogViewerEdit</name>
     <message>
-        <location filename="../UI/LogView.py" line="118"/>
+        <location filename="../UI/LogView.py" line="121"/>
         <source>Clear</source>
         <translation type="unfinished">Vyčistit</translation>
     </message>
     <message>
-        <location filename="../UI/LogView.py" line="119"/>
+        <location filename="../UI/LogView.py" line="122"/>
         <source>Copy</source>
         <translation type="unfinished">Kopírovat</translation>
     </message>
     <message>
-        <location filename="../UI/LogView.py" line="121"/>
+        <location filename="../UI/LogView.py" line="124"/>
         <source>Find</source>
         <translation type="unfinished">Hledat</translation>
     </message>
     <message>
-        <location filename="../UI/LogView.py" line="123"/>
+        <location filename="../UI/LogView.py" line="126"/>
         <source>Select All</source>
         <translation type="unfinished">Vybrat vše</translation>
     </message>
     <message>
-        <location filename="../UI/LogView.py" line="125"/>
+        <location filename="../UI/LogView.py" line="128"/>
         <source>Configure...</source>
         <translation type="unfinished">Konfigurovat...</translation>
     </message>
@@ -62113,32 +62113,32 @@
 <context>
     <name>SearchReplaceWidget</name>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="790"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="794"/>
         <source>&apos;{0}&apos; was not found.</source>
         <translation>&apos;{0}&apos; nebyl nalezen.</translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="919"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="925"/>
         <source>Replaced {0} occurrences.</source>
         <translation>Nahrazeno {0} výskytů.</translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="924"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="930"/>
         <source>Nothing replaced because &apos;{0}&apos; was not found.</source>
         <translation>Nebylo nic nahrazeno, protože &apos;{0}&apos; nebyl nalezen.</translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="151"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="152"/>
         <source>Find Next</source>
         <translation>Najít další</translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="158"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="159"/>
         <source>Find Prev</source>
         <translation>Najít předchozí</translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="58"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="59"/>
         <source>&lt;b&gt;Find and Replace&lt;/b&gt;
 &lt;p&gt;This dialog is used to find some text and replace it with another text.
 By checking the various checkboxes, the search can be made more specific.
@@ -62148,7 +62148,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="69"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="70"/>
         <source>&lt;b&gt;Find&lt;/b&gt;
 &lt;p&gt;This dialog is used to find some text. By checking the various checkboxes,
 the search can be made more specific. The search string might be a regular
@@ -62157,32 +62157,32 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="166"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="167"/>
         <source>Replace and Search</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="176"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="177"/>
         <source>Replace Occurrence</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="186"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="187"/>
         <source>Replace All</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="80"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="81"/>
         <source>&lt;table border=&quot;0&quot;&gt;
 &lt;tr&gt;&lt;td&gt;&lt;code&gt;.&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Matches any character&lt;/td&gt;&lt;/tr&gt;
-&lt;tr&gt;&lt;td&gt;&lt;code&gt;\(&lt;/code&gt;&lt;/td&gt;&lt;td&gt;This marks the start of a region for tagging a
+&lt;tr&gt;&lt;td&gt;&lt;code&gt;(&lt;/code&gt;&lt;/td&gt;&lt;td&gt;This marks the start of a region for tagging a
 match.&lt;/td&gt;&lt;/tr&gt;
-&lt;tr&gt;&lt;td&gt;&lt;code&gt;\)&lt;/code&gt;&lt;/td&gt;&lt;td&gt;This marks the end of a tagged region.
+&lt;tr&gt;&lt;td&gt;&lt;code&gt;)&lt;/code&gt;&lt;/td&gt;&lt;td&gt;This marks the end of a tagged region.
 &lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;&lt;code&gt;\n&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Where &lt;code&gt;n&lt;/code&gt; is 1 through 9 refers to the first through ninth
 tagged region when replacing. For example, if the search string was
-&lt;code&gt;Fred\([1-9]\)XXX&lt;/code&gt; and the replace string was
+&lt;code&gt;Fred([1-9])XXX&lt;/code&gt; and the replace string was
 &lt;code&gt;Sam\1YYY&lt;/code&gt;, when applied to &lt;code&gt;Fred2XXX&lt;/code&gt; this would
 generate &lt;code&gt;Sam2YYY&lt;/code&gt;.&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;&lt;code&gt;\&amp;lt;&lt;/code&gt;&lt;/td&gt;
@@ -62256,9 +62256,9 @@
         <translation>Stisknutím zavřít okno</translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchWidget.ui" line="99"/>
+        <location filename="../UI/SearchWidget.ui" line="94"/>
         <source>Regexp</source>
-        <translation type="obsolete">Regexp</translation>
+        <translation type="unfinished">Regexp</translation>
     </message>
     <message>
         <location filename="../Helpviewer/SearchWidget.ui" line="96"/>
@@ -62281,7 +62281,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../UI/SearchWidget.py" line="201"/>
+        <location filename="../UI/SearchWidget.py" line="217"/>
         <source>&apos;{0}&apos; was not found.</source>
         <translation type="unfinished">&apos;{0}&apos; nebyl nalezen.</translation>
     </message>
@@ -62353,6 +62353,11 @@
         <source>Whole word</source>
         <translation type="unfinished">Celé slovo</translation>
     </message>
+    <message>
+        <location filename="../UI/SearchWidgetLine.ui" line="111"/>
+        <source>Regexp</source>
+        <translation type="unfinished">Regexp</translation>
+    </message>
 </context>
 <context>
     <name>SecurityPage</name>
--- a/i18n/eric6_de.ts	Thu Nov 01 15:43:03 2018 +0100
+++ b/i18n/eric6_de.ts	Thu Nov 01 18:46:44 2018 +0100
@@ -43907,27 +43907,27 @@
 <context>
     <name>LogViewerEdit</name>
     <message>
-        <location filename="../UI/LogView.py" line="118"/>
+        <location filename="../UI/LogView.py" line="121"/>
         <source>Clear</source>
         <translation>Löschen</translation>
     </message>
     <message>
-        <location filename="../UI/LogView.py" line="119"/>
+        <location filename="../UI/LogView.py" line="122"/>
         <source>Copy</source>
         <translation>Kopieren</translation>
     </message>
     <message>
-        <location filename="../UI/LogView.py" line="121"/>
+        <location filename="../UI/LogView.py" line="124"/>
         <source>Find</source>
         <translation>Suchen</translation>
     </message>
     <message>
-        <location filename="../UI/LogView.py" line="123"/>
+        <location filename="../UI/LogView.py" line="126"/>
         <source>Select All</source>
         <translation>Alles auswählen</translation>
     </message>
     <message>
-        <location filename="../UI/LogView.py" line="125"/>
+        <location filename="../UI/LogView.py" line="128"/>
         <source>Configure...</source>
         <translation>Einstellungen...</translation>
     </message>
@@ -60788,32 +60788,32 @@
 <context>
     <name>SearchReplaceWidget</name>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="790"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="794"/>
         <source>&apos;{0}&apos; was not found.</source>
         <translation>„{0}“ wurde nicht gefunden.</translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="919"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="925"/>
         <source>Replaced {0} occurrences.</source>
         <translation>{0} Vorkommen ersetzt.</translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="924"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="930"/>
         <source>Nothing replaced because &apos;{0}&apos; was not found.</source>
         <translation>Es wurde nichts ersetzt, da „{0}“ nicht gefunden wurde.</translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="151"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="152"/>
         <source>Find Next</source>
         <translation>Weitersuchen</translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="158"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="159"/>
         <source>Find Prev</source>
         <translation>Rückwärtssuchen</translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="58"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="59"/>
         <source>&lt;b&gt;Find and Replace&lt;/b&gt;
 &lt;p&gt;This dialog is used to find some text and replace it with another text.
 By checking the various checkboxes, the search can be made more specific.
@@ -60827,7 +60827,7 @@
 </translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="69"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="70"/>
         <source>&lt;b&gt;Find&lt;/b&gt;
 &lt;p&gt;This dialog is used to find some text. By checking the various checkboxes,
 the search can be made more specific. The search string might be a regular
@@ -60840,32 +60840,32 @@
 </translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="166"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="167"/>
         <source>Replace and Search</source>
         <translation>Ersetzen und Suchen</translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="176"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="177"/>
         <source>Replace Occurrence</source>
         <translation>Fundstelle ersetzen</translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="186"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="187"/>
         <source>Replace All</source>
         <translation>Alle ersetzen</translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="80"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="81"/>
         <source>&lt;table border=&quot;0&quot;&gt;
 &lt;tr&gt;&lt;td&gt;&lt;code&gt;.&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Matches any character&lt;/td&gt;&lt;/tr&gt;
-&lt;tr&gt;&lt;td&gt;&lt;code&gt;\(&lt;/code&gt;&lt;/td&gt;&lt;td&gt;This marks the start of a region for tagging a
+&lt;tr&gt;&lt;td&gt;&lt;code&gt;(&lt;/code&gt;&lt;/td&gt;&lt;td&gt;This marks the start of a region for tagging a
 match.&lt;/td&gt;&lt;/tr&gt;
-&lt;tr&gt;&lt;td&gt;&lt;code&gt;\)&lt;/code&gt;&lt;/td&gt;&lt;td&gt;This marks the end of a tagged region.
+&lt;tr&gt;&lt;td&gt;&lt;code&gt;)&lt;/code&gt;&lt;/td&gt;&lt;td&gt;This marks the end of a tagged region.
 &lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;&lt;code&gt;\n&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Where &lt;code&gt;n&lt;/code&gt; is 1 through 9 refers to the first through ninth
 tagged region when replacing. For example, if the search string was
-&lt;code&gt;Fred\([1-9]\)XXX&lt;/code&gt; and the replace string was
+&lt;code&gt;Fred([1-9])XXX&lt;/code&gt; and the replace string was
 &lt;code&gt;Sam\1YYY&lt;/code&gt;, when applied to &lt;code&gt;Fred2XXX&lt;/code&gt; this would
 generate &lt;code&gt;Sam2YYY&lt;/code&gt;.&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;&lt;code&gt;\&amp;lt;&lt;/code&gt;&lt;/td&gt;
@@ -60900,11 +60900,11 @@
 </source>
         <translation>&lt;table border=&quot;0&quot;&gt;
 &lt;tr&gt;&lt;td&gt;&lt;code&gt;.&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Findet jedes beliebige Zeichen&lt;/td&gt;&lt;/tr&gt;
-&lt;tr&gt;&lt;td&gt;&lt;code&gt;\(&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Dies markiert den Start eines Bereiches, um eine Übereinstimmung zu benennen.&lt;/td&gt;&lt;/tr&gt;
-&lt;tr&gt;&lt;td&gt;&lt;code&gt;\)&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Dies markiert das Ende eines benannten Bereiches.&lt;/td&gt;&lt;/tr&gt;
+&lt;tr&gt;&lt;td&gt;&lt;code&gt;(&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Dies markiert den Start eines Bereiches, um eine Übereinstimmung zu benennen.&lt;/td&gt;&lt;/tr&gt;
+&lt;tr&gt;&lt;td&gt;&lt;code&gt;)&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Dies markiert das Ende eines benannten Bereiches.&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;&lt;code&gt;\n&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Mit &lt;code&gt;n&lt;/code&gt; zwischen 1 und 9 wird der erste bis neunte markierte Bereich bei Ersetzungen referenziert. Wenn die 
-Suchzeichenkette z.B. &lt;code&gt;Fred\([1-9]\)XXX&lt;/code&gt; und die Ersetzungszeichenkette &lt;code&gt;Sam\1YYY&lt;/code&gt; war, so erzeugt dies 
+Suchzeichenkette z.B. &lt;code&gt;Fred([1-9])XXX&lt;/code&gt; und die Ersetzungszeichenkette &lt;code&gt;Sam\1YYY&lt;/code&gt; war, so erzeugt dies 
 &lt;code&gt;Sam2YYY&lt;/code&gt;, wenn es auf &lt;code&gt;Fred2XXX&lt;/code&gt; angewendet wird.&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;&lt;code&gt;\&amp;lt;&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Dies findet den Wortanfang gemäß der Scintilla-Definition von Wort.&lt;/td&gt;&lt;/tr&gt;
@@ -60985,7 +60985,7 @@
         <translation>Alle hervorheben</translation>
     </message>
     <message>
-        <location filename="../UI/SearchWidget.py" line="201"/>
+        <location filename="../UI/SearchWidget.py" line="217"/>
         <source>&apos;{0}&apos; was not found.</source>
         <translation>„{0}“ wurde nicht gefunden.</translation>
     </message>
@@ -61019,6 +61019,11 @@
         <source>&amp;Selection only</source>
         <translation>nur &amp;Auswahl</translation>
     </message>
+    <message>
+        <location filename="../UI/SearchWidget.ui" line="94"/>
+        <source>Regexp</source>
+        <translation>Regexp</translation>
+    </message>
 </context>
 <context>
     <name>SearchWidgetLine</name>
@@ -61057,6 +61062,11 @@
         <source>Whole word</source>
         <translation>Ganzes Wort</translation>
     </message>
+    <message>
+        <location filename="../UI/SearchWidgetLine.ui" line="111"/>
+        <source>Regexp</source>
+        <translation>Regexp</translation>
+    </message>
 </context>
 <context>
     <name>SecurityPage</name>
--- a/i18n/eric6_empty.ts	Thu Nov 01 15:43:03 2018 +0100
+++ b/i18n/eric6_empty.ts	Thu Nov 01 18:46:44 2018 +0100
@@ -43671,27 +43671,27 @@
 <context>
     <name>LogViewerEdit</name>
     <message>
-        <location filename="../UI/LogView.py" line="118"/>
+        <location filename="../UI/LogView.py" line="121"/>
         <source>Clear</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../UI/LogView.py" line="119"/>
+        <location filename="../UI/LogView.py" line="122"/>
         <source>Copy</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../UI/LogView.py" line="121"/>
+        <location filename="../UI/LogView.py" line="124"/>
         <source>Find</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../UI/LogView.py" line="123"/>
+        <location filename="../UI/LogView.py" line="126"/>
         <source>Select All</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../UI/LogView.py" line="125"/>
+        <location filename="../UI/LogView.py" line="128"/>
         <source>Configure...</source>
         <translation type="unfinished"></translation>
     </message>
@@ -60343,7 +60343,7 @@
 <context>
     <name>SearchReplaceWidget</name>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="58"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="59"/>
         <source>&lt;b&gt;Find and Replace&lt;/b&gt;
 &lt;p&gt;This dialog is used to find some text and replace it with another text.
 By checking the various checkboxes, the search can be made more specific.
@@ -60353,7 +60353,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="69"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="70"/>
         <source>&lt;b&gt;Find&lt;/b&gt;
 &lt;p&gt;This dialog is used to find some text. By checking the various checkboxes,
 the search can be made more specific. The search string might be a regular
@@ -60362,57 +60362,57 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="151"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="152"/>
         <source>Find Next</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="158"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="159"/>
         <source>Find Prev</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="790"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="794"/>
         <source>&apos;{0}&apos; was not found.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="919"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="925"/>
         <source>Replaced {0} occurrences.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="924"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="930"/>
         <source>Nothing replaced because &apos;{0}&apos; was not found.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="166"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="167"/>
         <source>Replace and Search</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="176"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="177"/>
         <source>Replace Occurrence</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="186"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="187"/>
         <source>Replace All</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="80"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="81"/>
         <source>&lt;table border=&quot;0&quot;&gt;
 &lt;tr&gt;&lt;td&gt;&lt;code&gt;.&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Matches any character&lt;/td&gt;&lt;/tr&gt;
-&lt;tr&gt;&lt;td&gt;&lt;code&gt;\(&lt;/code&gt;&lt;/td&gt;&lt;td&gt;This marks the start of a region for tagging a
+&lt;tr&gt;&lt;td&gt;&lt;code&gt;(&lt;/code&gt;&lt;/td&gt;&lt;td&gt;This marks the start of a region for tagging a
 match.&lt;/td&gt;&lt;/tr&gt;
-&lt;tr&gt;&lt;td&gt;&lt;code&gt;\)&lt;/code&gt;&lt;/td&gt;&lt;td&gt;This marks the end of a tagged region.
+&lt;tr&gt;&lt;td&gt;&lt;code&gt;)&lt;/code&gt;&lt;/td&gt;&lt;td&gt;This marks the end of a tagged region.
 &lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;&lt;code&gt;\n&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Where &lt;code&gt;n&lt;/code&gt; is 1 through 9 refers to the first through ninth
 tagged region when replacing. For example, if the search string was
-&lt;code&gt;Fred\([1-9]\)XXX&lt;/code&gt; and the replace string was
+&lt;code&gt;Fred([1-9])XXX&lt;/code&gt; and the replace string was
 &lt;code&gt;Sam\1YYY&lt;/code&gt;, when applied to &lt;code&gt;Fred2XXX&lt;/code&gt; this would
 generate &lt;code&gt;Sam2YYY&lt;/code&gt;.&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;&lt;code&gt;\&amp;lt;&lt;/code&gt;&lt;/td&gt;
@@ -60501,7 +60501,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../UI/SearchWidget.py" line="201"/>
+        <location filename="../UI/SearchWidget.py" line="217"/>
         <source>&apos;{0}&apos; was not found.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -60535,6 +60535,11 @@
         <source>&amp;Selection only</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../UI/SearchWidget.ui" line="94"/>
+        <source>Regexp</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>SearchWidgetLine</name>
@@ -60573,6 +60578,11 @@
         <source>Whole word</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../UI/SearchWidgetLine.ui" line="111"/>
+        <source>Regexp</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>SecurityPage</name>
--- a/i18n/eric6_en.ts	Thu Nov 01 15:43:03 2018 +0100
+++ b/i18n/eric6_en.ts	Thu Nov 01 18:46:44 2018 +0100
@@ -43716,27 +43716,27 @@
 <context>
     <name>LogViewerEdit</name>
     <message>
-        <location filename="../UI/LogView.py" line="118"/>
+        <location filename="../UI/LogView.py" line="121"/>
         <source>Clear</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../UI/LogView.py" line="119"/>
+        <location filename="../UI/LogView.py" line="122"/>
         <source>Copy</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../UI/LogView.py" line="121"/>
+        <location filename="../UI/LogView.py" line="124"/>
         <source>Find</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../UI/LogView.py" line="123"/>
+        <location filename="../UI/LogView.py" line="126"/>
         <source>Select All</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../UI/LogView.py" line="125"/>
+        <location filename="../UI/LogView.py" line="128"/>
         <source>Configure...</source>
         <translation type="unfinished"></translation>
     </message>
@@ -60392,32 +60392,32 @@
 <context>
     <name>SearchReplaceWidget</name>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="151"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="152"/>
         <source>Find Next</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="158"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="159"/>
         <source>Find Prev</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="790"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="794"/>
         <source>&apos;{0}&apos; was not found.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="919"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="925"/>
         <source>Replaced {0} occurrences.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="924"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="930"/>
         <source>Nothing replaced because &apos;{0}&apos; was not found.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="58"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="59"/>
         <source>&lt;b&gt;Find and Replace&lt;/b&gt;
 &lt;p&gt;This dialog is used to find some text and replace it with another text.
 By checking the various checkboxes, the search can be made more specific.
@@ -60427,7 +60427,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="69"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="70"/>
         <source>&lt;b&gt;Find&lt;/b&gt;
 &lt;p&gt;This dialog is used to find some text. By checking the various checkboxes,
 the search can be made more specific. The search string might be a regular
@@ -60436,32 +60436,32 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="166"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="167"/>
         <source>Replace and Search</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="176"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="177"/>
         <source>Replace Occurrence</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="186"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="187"/>
         <source>Replace All</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="80"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="81"/>
         <source>&lt;table border=&quot;0&quot;&gt;
 &lt;tr&gt;&lt;td&gt;&lt;code&gt;.&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Matches any character&lt;/td&gt;&lt;/tr&gt;
-&lt;tr&gt;&lt;td&gt;&lt;code&gt;\(&lt;/code&gt;&lt;/td&gt;&lt;td&gt;This marks the start of a region for tagging a
+&lt;tr&gt;&lt;td&gt;&lt;code&gt;(&lt;/code&gt;&lt;/td&gt;&lt;td&gt;This marks the start of a region for tagging a
 match.&lt;/td&gt;&lt;/tr&gt;
-&lt;tr&gt;&lt;td&gt;&lt;code&gt;\)&lt;/code&gt;&lt;/td&gt;&lt;td&gt;This marks the end of a tagged region.
+&lt;tr&gt;&lt;td&gt;&lt;code&gt;)&lt;/code&gt;&lt;/td&gt;&lt;td&gt;This marks the end of a tagged region.
 &lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;&lt;code&gt;\n&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Where &lt;code&gt;n&lt;/code&gt; is 1 through 9 refers to the first through ninth
 tagged region when replacing. For example, if the search string was
-&lt;code&gt;Fred\([1-9]\)XXX&lt;/code&gt; and the replace string was
+&lt;code&gt;Fred([1-9])XXX&lt;/code&gt; and the replace string was
 &lt;code&gt;Sam\1YYY&lt;/code&gt;, when applied to &lt;code&gt;Fred2XXX&lt;/code&gt; this would
 generate &lt;code&gt;Sam2YYY&lt;/code&gt;.&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;&lt;code&gt;\&amp;lt;&lt;/code&gt;&lt;/td&gt;
@@ -60550,7 +60550,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../UI/SearchWidget.py" line="201"/>
+        <location filename="../UI/SearchWidget.py" line="217"/>
         <source>&apos;{0}&apos; was not found.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -60584,6 +60584,11 @@
         <source>&amp;Selection only</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../UI/SearchWidget.ui" line="94"/>
+        <source>Regexp</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>SearchWidgetLine</name>
@@ -60622,6 +60627,11 @@
         <source>Whole word</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../UI/SearchWidgetLine.ui" line="111"/>
+        <source>Regexp</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>SecurityPage</name>
--- a/i18n/eric6_es.ts	Thu Nov 01 15:43:03 2018 +0100
+++ b/i18n/eric6_es.ts	Thu Nov 01 18:46:44 2018 +0100
@@ -43910,27 +43910,27 @@
 <context>
     <name>LogViewerEdit</name>
     <message>
-        <location filename="../UI/LogView.py" line="118"/>
+        <location filename="../UI/LogView.py" line="121"/>
         <source>Clear</source>
         <translation>Limpiar</translation>
     </message>
     <message>
-        <location filename="../UI/LogView.py" line="119"/>
+        <location filename="../UI/LogView.py" line="122"/>
         <source>Copy</source>
         <translation>Copiar</translation>
     </message>
     <message>
-        <location filename="../UI/LogView.py" line="121"/>
+        <location filename="../UI/LogView.py" line="124"/>
         <source>Find</source>
         <translation>Buscar</translation>
     </message>
     <message>
-        <location filename="../UI/LogView.py" line="123"/>
+        <location filename="../UI/LogView.py" line="126"/>
         <source>Select All</source>
         <translation>Seleccionar Todo</translation>
     </message>
     <message>
-        <location filename="../UI/LogView.py" line="125"/>
+        <location filename="../UI/LogView.py" line="128"/>
         <source>Configure...</source>
         <translation>Configurar...</translation>
     </message>
@@ -60754,32 +60754,32 @@
 <context>
     <name>SearchReplaceWidget</name>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="790"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="794"/>
         <source>&apos;{0}&apos; was not found.</source>
         <translation>&apos;{0}&apos; no se ha encontrado.</translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="919"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="925"/>
         <source>Replaced {0} occurrences.</source>
         <translation>Se han reemplazado {0} ocurrencias.</translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="924"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="930"/>
         <source>Nothing replaced because &apos;{0}&apos; was not found.</source>
         <translation>No se ha reemplazado nada porque &apos;{0}&apos; no se ha encontrado.</translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="151"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="152"/>
         <source>Find Next</source>
         <translation>Buscar Siguiente</translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="158"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="159"/>
         <source>Find Prev</source>
         <translation>Buscar Anterior</translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="58"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="59"/>
         <source>&lt;b&gt;Find and Replace&lt;/b&gt;
 &lt;p&gt;This dialog is used to find some text and replace it with another text.
 By checking the various checkboxes, the search can be made more specific.
@@ -60794,7 +60794,7 @@
 </translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="69"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="70"/>
         <source>&lt;b&gt;Find&lt;/b&gt;
 &lt;p&gt;This dialog is used to find some text. By checking the various checkboxes,
 the search can be made more specific. The search string might be a regular
@@ -60807,17 +60807,32 @@
 </translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="80"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="167"/>
+        <source>Replace and Search</source>
+        <translation>Buscar y Reemplazar</translation>
+    </message>
+    <message>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="177"/>
+        <source>Replace Occurrence</source>
+        <translation>Reemplazar Ocurrencia</translation>
+    </message>
+    <message>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="187"/>
+        <source>Replace All</source>
+        <translation>Reemplazar Todo</translation>
+    </message>
+    <message>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="81"/>
         <source>&lt;table border=&quot;0&quot;&gt;
 &lt;tr&gt;&lt;td&gt;&lt;code&gt;.&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Matches any character&lt;/td&gt;&lt;/tr&gt;
-&lt;tr&gt;&lt;td&gt;&lt;code&gt;\(&lt;/code&gt;&lt;/td&gt;&lt;td&gt;This marks the start of a region for tagging a
+&lt;tr&gt;&lt;td&gt;&lt;code&gt;(&lt;/code&gt;&lt;/td&gt;&lt;td&gt;This marks the start of a region for tagging a
 match.&lt;/td&gt;&lt;/tr&gt;
-&lt;tr&gt;&lt;td&gt;&lt;code&gt;\)&lt;/code&gt;&lt;/td&gt;&lt;td&gt;This marks the end of a tagged region.
+&lt;tr&gt;&lt;td&gt;&lt;code&gt;)&lt;/code&gt;&lt;/td&gt;&lt;td&gt;This marks the end of a tagged region.
 &lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;&lt;code&gt;\n&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Where &lt;code&gt;n&lt;/code&gt; is 1 through 9 refers to the first through ninth
 tagged region when replacing. For example, if the search string was
-&lt;code&gt;Fred\([1-9]\)XXX&lt;/code&gt; and the replace string was
+&lt;code&gt;Fred([1-9])XXX&lt;/code&gt; and the replace string was
 &lt;code&gt;Sam\1YYY&lt;/code&gt;, when applied to &lt;code&gt;Fred2XXX&lt;/code&gt; this would
 generate &lt;code&gt;Sam2YYY&lt;/code&gt;.&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;&lt;code&gt;\&amp;lt;&lt;/code&gt;&lt;/td&gt;
@@ -60852,21 +60867,6 @@
 </source>
         <translation type="unfinished"></translation>
     </message>
-    <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="166"/>
-        <source>Replace and Search</source>
-        <translation>Buscar y Reemplazar</translation>
-    </message>
-    <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="176"/>
-        <source>Replace Occurrence</source>
-        <translation>Reemplazar Ocurrencia</translation>
-    </message>
-    <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="186"/>
-        <source>Replace All</source>
-        <translation>Reemplazar Todo</translation>
-    </message>
 </context>
 <context>
     <name>SearchWidget</name>
@@ -60921,7 +60921,7 @@
         <translation>Resaltar todo</translation>
     </message>
     <message>
-        <location filename="../UI/SearchWidget.py" line="201"/>
+        <location filename="../UI/SearchWidget.py" line="217"/>
         <source>&apos;{0}&apos; was not found.</source>
         <translation>&apos;{0}&apos; no se ha encontrado.</translation>
     </message>
@@ -60955,6 +60955,11 @@
         <source>&amp;Selection only</source>
         <translation>&amp;Selección solamente</translation>
     </message>
+    <message>
+        <location filename="../UI/SearchWidget.ui" line="94"/>
+        <source>Regexp</source>
+        <translation type="unfinished">Regexp</translation>
+    </message>
 </context>
 <context>
     <name>SearchWidgetLine</name>
@@ -60993,6 +60998,11 @@
         <source>Whole word</source>
         <translation>Palabra completa</translation>
     </message>
+    <message>
+        <location filename="../UI/SearchWidgetLine.ui" line="111"/>
+        <source>Regexp</source>
+        <translation type="unfinished">Rege&amp;xp</translation>
+    </message>
 </context>
 <context>
     <name>SecurityPage</name>
--- a/i18n/eric6_fr.ts	Thu Nov 01 15:43:03 2018 +0100
+++ b/i18n/eric6_fr.ts	Thu Nov 01 18:46:44 2018 +0100
@@ -44818,27 +44818,27 @@
 <context>
     <name>LogViewerEdit</name>
     <message>
-        <location filename="../UI/LogView.py" line="118"/>
+        <location filename="../UI/LogView.py" line="121"/>
         <source>Clear</source>
         <translation type="unfinished">Effacer</translation>
     </message>
     <message>
-        <location filename="../UI/LogView.py" line="119"/>
+        <location filename="../UI/LogView.py" line="122"/>
         <source>Copy</source>
         <translation type="unfinished">Copier</translation>
     </message>
     <message>
-        <location filename="../UI/LogView.py" line="121"/>
+        <location filename="../UI/LogView.py" line="124"/>
         <source>Find</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../UI/LogView.py" line="123"/>
+        <location filename="../UI/LogView.py" line="126"/>
         <source>Select All</source>
         <translation type="unfinished">Tout sélectionner</translation>
     </message>
     <message>
-        <location filename="../UI/LogView.py" line="125"/>
+        <location filename="../UI/LogView.py" line="128"/>
         <source>Configure...</source>
         <translation type="unfinished">Configuration...</translation>
     </message>
@@ -61801,32 +61801,32 @@
 <context>
     <name>SearchReplaceWidget</name>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="790"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="794"/>
         <source>&apos;{0}&apos; was not found.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="919"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="925"/>
         <source>Replaced {0} occurrences.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="924"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="930"/>
         <source>Nothing replaced because &apos;{0}&apos; was not found.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="151"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="152"/>
         <source>Find Next</source>
         <translation type="unfinished">Suivant</translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="158"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="159"/>
         <source>Find Prev</source>
         <translation type="unfinished">Précédent</translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="58"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="59"/>
         <source>&lt;b&gt;Find and Replace&lt;/b&gt;
 &lt;p&gt;This dialog is used to find some text and replace it with another text.
 By checking the various checkboxes, the search can be made more specific.
@@ -61836,7 +61836,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="69"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="70"/>
         <source>&lt;b&gt;Find&lt;/b&gt;
 &lt;p&gt;This dialog is used to find some text. By checking the various checkboxes,
 the search can be made more specific. The search string might be a regular
@@ -61845,32 +61845,32 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="166"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="167"/>
         <source>Replace and Search</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="176"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="177"/>
         <source>Replace Occurrence</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="186"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="187"/>
         <source>Replace All</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="80"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="81"/>
         <source>&lt;table border=&quot;0&quot;&gt;
 &lt;tr&gt;&lt;td&gt;&lt;code&gt;.&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Matches any character&lt;/td&gt;&lt;/tr&gt;
-&lt;tr&gt;&lt;td&gt;&lt;code&gt;\(&lt;/code&gt;&lt;/td&gt;&lt;td&gt;This marks the start of a region for tagging a
+&lt;tr&gt;&lt;td&gt;&lt;code&gt;(&lt;/code&gt;&lt;/td&gt;&lt;td&gt;This marks the start of a region for tagging a
 match.&lt;/td&gt;&lt;/tr&gt;
-&lt;tr&gt;&lt;td&gt;&lt;code&gt;\)&lt;/code&gt;&lt;/td&gt;&lt;td&gt;This marks the end of a tagged region.
+&lt;tr&gt;&lt;td&gt;&lt;code&gt;)&lt;/code&gt;&lt;/td&gt;&lt;td&gt;This marks the end of a tagged region.
 &lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;&lt;code&gt;\n&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Where &lt;code&gt;n&lt;/code&gt; is 1 through 9 refers to the first through ninth
 tagged region when replacing. For example, if the search string was
-&lt;code&gt;Fred\([1-9]\)XXX&lt;/code&gt; and the replace string was
+&lt;code&gt;Fred([1-9])XXX&lt;/code&gt; and the replace string was
 &lt;code&gt;Sam\1YYY&lt;/code&gt;, when applied to &lt;code&gt;Fred2XXX&lt;/code&gt; this would
 generate &lt;code&gt;Sam2YYY&lt;/code&gt;.&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;&lt;code&gt;\&amp;lt;&lt;/code&gt;&lt;/td&gt;
@@ -61944,9 +61944,9 @@
         <translation>Mots complets</translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchWidget.ui" line="99"/>
+        <location filename="../UI/SearchWidget.ui" line="94"/>
         <source>Regexp</source>
-        <translation type="obsolete">Expression régulière</translation>
+        <translation type="unfinished">Expression régulière</translation>
     </message>
     <message>
         <location filename="../Helpviewer/SearchWidget.ui" line="96"/>
@@ -61964,7 +61964,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../UI/SearchWidget.py" line="201"/>
+        <location filename="../UI/SearchWidget.py" line="217"/>
         <source>&apos;{0}&apos; was not found.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -62036,6 +62036,11 @@
         <source>Whole word</source>
         <translation type="unfinished">Mots complets</translation>
     </message>
+    <message>
+        <location filename="../UI/SearchWidgetLine.ui" line="111"/>
+        <source>Regexp</source>
+        <translation type="unfinished">Expression régulière</translation>
+    </message>
 </context>
 <context>
     <name>SecurityPage</name>
--- a/i18n/eric6_it.ts	Thu Nov 01 15:43:03 2018 +0100
+++ b/i18n/eric6_it.ts	Thu Nov 01 18:46:44 2018 +0100
@@ -44154,27 +44154,27 @@
 <context>
     <name>LogViewerEdit</name>
     <message>
-        <location filename="../UI/LogView.py" line="118"/>
+        <location filename="../UI/LogView.py" line="121"/>
         <source>Clear</source>
         <translation>Pulisci</translation>
     </message>
     <message>
-        <location filename="../UI/LogView.py" line="119"/>
+        <location filename="../UI/LogView.py" line="122"/>
         <source>Copy</source>
         <translation>Copia</translation>
     </message>
     <message>
-        <location filename="../UI/LogView.py" line="121"/>
+        <location filename="../UI/LogView.py" line="124"/>
         <source>Find</source>
         <translation>Trova</translation>
     </message>
     <message>
-        <location filename="../UI/LogView.py" line="123"/>
+        <location filename="../UI/LogView.py" line="126"/>
         <source>Select All</source>
         <translation>Seleziona tutti</translation>
     </message>
     <message>
-        <location filename="../UI/LogView.py" line="125"/>
+        <location filename="../UI/LogView.py" line="128"/>
         <source>Configure...</source>
         <translation>Configura...</translation>
     </message>
@@ -61028,32 +61028,32 @@
 <context>
     <name>SearchReplaceWidget</name>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="790"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="794"/>
         <source>&apos;{0}&apos; was not found.</source>
         <translation>&apos;{0}&apos; non è stato trovato.</translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="919"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="925"/>
         <source>Replaced {0} occurrences.</source>
         <translation>Sostituite {0} ricorrenze.</translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="924"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="930"/>
         <source>Nothing replaced because &apos;{0}&apos; was not found.</source>
         <translation>Nessuna sostituzione perché &apos;{0}&apos; non è stato trovato.</translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="151"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="152"/>
         <source>Find Next</source>
         <translation>Trova successivo</translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="158"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="159"/>
         <source>Find Prev</source>
         <translation>Trova prec</translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="58"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="59"/>
         <source>&lt;b&gt;Find and Replace&lt;/b&gt;
 &lt;p&gt;This dialog is used to find some text and replace it with another text.
 By checking the various checkboxes, the search can be made more specific.
@@ -61063,7 +61063,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="69"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="70"/>
         <source>&lt;b&gt;Find&lt;/b&gt;
 &lt;p&gt;This dialog is used to find some text. By checking the various checkboxes,
 the search can be made more specific. The search string might be a regular
@@ -61072,32 +61072,32 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="166"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="167"/>
         <source>Replace and Search</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="176"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="177"/>
         <source>Replace Occurrence</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="186"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="187"/>
         <source>Replace All</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="80"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="81"/>
         <source>&lt;table border=&quot;0&quot;&gt;
 &lt;tr&gt;&lt;td&gt;&lt;code&gt;.&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Matches any character&lt;/td&gt;&lt;/tr&gt;
-&lt;tr&gt;&lt;td&gt;&lt;code&gt;\(&lt;/code&gt;&lt;/td&gt;&lt;td&gt;This marks the start of a region for tagging a
+&lt;tr&gt;&lt;td&gt;&lt;code&gt;(&lt;/code&gt;&lt;/td&gt;&lt;td&gt;This marks the start of a region for tagging a
 match.&lt;/td&gt;&lt;/tr&gt;
-&lt;tr&gt;&lt;td&gt;&lt;code&gt;\)&lt;/code&gt;&lt;/td&gt;&lt;td&gt;This marks the end of a tagged region.
+&lt;tr&gt;&lt;td&gt;&lt;code&gt;)&lt;/code&gt;&lt;/td&gt;&lt;td&gt;This marks the end of a tagged region.
 &lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;&lt;code&gt;\n&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Where &lt;code&gt;n&lt;/code&gt; is 1 through 9 refers to the first through ninth
 tagged region when replacing. For example, if the search string was
-&lt;code&gt;Fred\([1-9]\)XXX&lt;/code&gt; and the replace string was
+&lt;code&gt;Fred([1-9])XXX&lt;/code&gt; and the replace string was
 &lt;code&gt;Sam\1YYY&lt;/code&gt;, when applied to &lt;code&gt;Fred2XXX&lt;/code&gt; this would
 generate &lt;code&gt;Sam2YYY&lt;/code&gt;.&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;&lt;code&gt;\&amp;lt;&lt;/code&gt;&lt;/td&gt;
@@ -61186,7 +61186,7 @@
         <translation>Evidenzia tutti</translation>
     </message>
     <message>
-        <location filename="../UI/SearchWidget.py" line="201"/>
+        <location filename="../UI/SearchWidget.py" line="217"/>
         <source>&apos;{0}&apos; was not found.</source>
         <translation type="unfinished">&apos;{0}&apos; non è stato trovato.</translation>
     </message>
@@ -61220,6 +61220,11 @@
         <source>&amp;Selection only</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../UI/SearchWidget.ui" line="94"/>
+        <source>Regexp</source>
+        <translation type="unfinished">Regexp</translation>
+    </message>
 </context>
 <context>
     <name>SearchWidgetLine</name>
@@ -61258,6 +61263,11 @@
         <source>Whole word</source>
         <translation type="unfinished">Tutta la parola</translation>
     </message>
+    <message>
+        <location filename="../UI/SearchWidgetLine.ui" line="111"/>
+        <source>Regexp</source>
+        <translation type="unfinished">Regexp</translation>
+    </message>
 </context>
 <context>
     <name>SecurityPage</name>
--- a/i18n/eric6_pt.ts	Thu Nov 01 15:43:03 2018 +0100
+++ b/i18n/eric6_pt.ts	Thu Nov 01 18:46:44 2018 +0100
@@ -45537,27 +45537,27 @@
 <context>
     <name>LogViewerEdit</name>
     <message>
-        <location filename="../UI/LogView.py" line="118"/>
+        <location filename="../UI/LogView.py" line="121"/>
         <source>Clear</source>
         <translation>Limpar</translation>
     </message>
     <message>
-        <location filename="../UI/LogView.py" line="119"/>
+        <location filename="../UI/LogView.py" line="122"/>
         <source>Copy</source>
         <translation>Copiar</translation>
     </message>
     <message>
-        <location filename="../UI/LogView.py" line="121"/>
+        <location filename="../UI/LogView.py" line="124"/>
         <source>Find</source>
         <translation>Encontrar</translation>
     </message>
     <message>
-        <location filename="../UI/LogView.py" line="123"/>
+        <location filename="../UI/LogView.py" line="126"/>
         <source>Select All</source>
         <translation>Selecionar Tudo</translation>
     </message>
     <message>
-        <location filename="../UI/LogView.py" line="125"/>
+        <location filename="../UI/LogView.py" line="128"/>
         <source>Configure...</source>
         <translation>Configurar...</translation>
     </message>
@@ -62388,32 +62388,32 @@
 <context>
     <name>SearchReplaceWidget</name>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="151"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="152"/>
         <source>Find Next</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="158"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="159"/>
         <source>Find Prev</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="790"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="794"/>
         <source>&apos;{0}&apos; was not found.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="919"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="925"/>
         <source>Replaced {0} occurrences.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="924"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="930"/>
         <source>Nothing replaced because &apos;{0}&apos; was not found.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="58"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="59"/>
         <source>&lt;b&gt;Find and Replace&lt;/b&gt;
 &lt;p&gt;This dialog is used to find some text and replace it with another text.
 By checking the various checkboxes, the search can be made more specific.
@@ -62423,7 +62423,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="69"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="70"/>
         <source>&lt;b&gt;Find&lt;/b&gt;
 &lt;p&gt;This dialog is used to find some text. By checking the various checkboxes,
 the search can be made more specific. The search string might be a regular
@@ -62432,32 +62432,32 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="166"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="167"/>
         <source>Replace and Search</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="176"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="177"/>
         <source>Replace Occurrence</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="186"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="187"/>
         <source>Replace All</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="80"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="81"/>
         <source>&lt;table border=&quot;0&quot;&gt;
 &lt;tr&gt;&lt;td&gt;&lt;code&gt;.&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Matches any character&lt;/td&gt;&lt;/tr&gt;
-&lt;tr&gt;&lt;td&gt;&lt;code&gt;\(&lt;/code&gt;&lt;/td&gt;&lt;td&gt;This marks the start of a region for tagging a
+&lt;tr&gt;&lt;td&gt;&lt;code&gt;(&lt;/code&gt;&lt;/td&gt;&lt;td&gt;This marks the start of a region for tagging a
 match.&lt;/td&gt;&lt;/tr&gt;
-&lt;tr&gt;&lt;td&gt;&lt;code&gt;\)&lt;/code&gt;&lt;/td&gt;&lt;td&gt;This marks the end of a tagged region.
+&lt;tr&gt;&lt;td&gt;&lt;code&gt;)&lt;/code&gt;&lt;/td&gt;&lt;td&gt;This marks the end of a tagged region.
 &lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;&lt;code&gt;\n&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Where &lt;code&gt;n&lt;/code&gt; is 1 through 9 refers to the first through ninth
 tagged region when replacing. For example, if the search string was
-&lt;code&gt;Fred\([1-9]\)XXX&lt;/code&gt; and the replace string was
+&lt;code&gt;Fred([1-9])XXX&lt;/code&gt; and the replace string was
 &lt;code&gt;Sam\1YYY&lt;/code&gt;, when applied to &lt;code&gt;Fred2XXX&lt;/code&gt; this would
 generate &lt;code&gt;Sam2YYY&lt;/code&gt;.&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;&lt;code&gt;\&amp;lt;&lt;/code&gt;&lt;/td&gt;
@@ -62531,9 +62531,9 @@
         <translation type="unfinished">Palavra completa</translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchWidget.ui" line="99"/>
+        <location filename="../UI/SearchWidget.ui" line="94"/>
         <source>Regexp</source>
-        <translation type="obsolete">Regexp</translation>
+        <translation type="unfinished">Regexp</translation>
     </message>
     <message>
         <location filename="../Helpviewer/SearchWidget.ui" line="96"/>
@@ -62556,7 +62556,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../UI/SearchWidget.py" line="201"/>
+        <location filename="../UI/SearchWidget.py" line="217"/>
         <source>&apos;{0}&apos; was not found.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -62628,6 +62628,11 @@
         <source>Whole word</source>
         <translation type="unfinished">Palavra completa</translation>
     </message>
+    <message>
+        <location filename="../UI/SearchWidgetLine.ui" line="111"/>
+        <source>Regexp</source>
+        <translation type="unfinished">Regexp</translation>
+    </message>
 </context>
 <context>
     <name>SecurityPage</name>
--- a/i18n/eric6_ru.ts	Thu Nov 01 15:43:03 2018 +0100
+++ b/i18n/eric6_ru.ts	Thu Nov 01 18:46:44 2018 +0100
@@ -43983,27 +43983,27 @@
 <context>
     <name>LogViewerEdit</name>
     <message>
-        <location filename="../UI/LogView.py" line="118"/>
+        <location filename="../UI/LogView.py" line="121"/>
         <source>Clear</source>
         <translation>Очистить</translation>
     </message>
     <message>
-        <location filename="../UI/LogView.py" line="119"/>
+        <location filename="../UI/LogView.py" line="122"/>
         <source>Copy</source>
         <translation>Копировать</translation>
     </message>
     <message>
-        <location filename="../UI/LogView.py" line="121"/>
+        <location filename="../UI/LogView.py" line="124"/>
         <source>Find</source>
         <translation>Найти</translation>
     </message>
     <message>
-        <location filename="../UI/LogView.py" line="123"/>
+        <location filename="../UI/LogView.py" line="126"/>
         <source>Select All</source>
         <translation>Выбрать всё</translation>
     </message>
     <message>
-        <location filename="../UI/LogView.py" line="125"/>
+        <location filename="../UI/LogView.py" line="128"/>
         <source>Configure...</source>
         <translation>Настроить...</translation>
     </message>
@@ -60936,32 +60936,32 @@
 <context>
     <name>SearchReplaceWidget</name>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="151"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="152"/>
         <source>Find Next</source>
         <translation>Найти далее</translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="158"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="159"/>
         <source>Find Prev</source>
         <translation>Найти предыдущее</translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="790"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="794"/>
         <source>&apos;{0}&apos; was not found.</source>
         <translation>&apos;{0}&apos; не найдено.</translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="919"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="925"/>
         <source>Replaced {0} occurrences.</source>
         <translation>Заменено в {0} местах.</translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="924"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="930"/>
         <source>Nothing replaced because &apos;{0}&apos; was not found.</source>
         <translation>Ничего не заменено, потому что &apos;{0}&apos; не найдено.</translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="58"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="59"/>
         <source>&lt;b&gt;Find and Replace&lt;/b&gt;
 &lt;p&gt;This dialog is used to find some text and replace it with another text.
 By checking the various checkboxes, the search can be made more specific.
@@ -60976,7 +60976,7 @@
 </translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="69"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="70"/>
         <source>&lt;b&gt;Find&lt;/b&gt;
 &lt;p&gt;This dialog is used to find some text. By checking the various checkboxes,
 the search can be made more specific. The search string might be a regular
@@ -60990,17 +60990,32 @@
 </translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="80"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="167"/>
+        <source>Replace and Search</source>
+        <translation>Заменить и найти</translation>
+    </message>
+    <message>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="177"/>
+        <source>Replace Occurrence</source>
+        <translation>Заменить вхождение</translation>
+    </message>
+    <message>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="187"/>
+        <source>Replace All</source>
+        <translation>Заменить все</translation>
+    </message>
+    <message>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="81"/>
         <source>&lt;table border=&quot;0&quot;&gt;
 &lt;tr&gt;&lt;td&gt;&lt;code&gt;.&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Matches any character&lt;/td&gt;&lt;/tr&gt;
-&lt;tr&gt;&lt;td&gt;&lt;code&gt;\(&lt;/code&gt;&lt;/td&gt;&lt;td&gt;This marks the start of a region for tagging a
+&lt;tr&gt;&lt;td&gt;&lt;code&gt;(&lt;/code&gt;&lt;/td&gt;&lt;td&gt;This marks the start of a region for tagging a
 match.&lt;/td&gt;&lt;/tr&gt;
-&lt;tr&gt;&lt;td&gt;&lt;code&gt;\)&lt;/code&gt;&lt;/td&gt;&lt;td&gt;This marks the end of a tagged region.
+&lt;tr&gt;&lt;td&gt;&lt;code&gt;)&lt;/code&gt;&lt;/td&gt;&lt;td&gt;This marks the end of a tagged region.
 &lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;&lt;code&gt;\n&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Where &lt;code&gt;n&lt;/code&gt; is 1 through 9 refers to the first through ninth
 tagged region when replacing. For example, if the search string was
-&lt;code&gt;Fred\([1-9]\)XXX&lt;/code&gt; and the replace string was
+&lt;code&gt;Fred([1-9])XXX&lt;/code&gt; and the replace string was
 &lt;code&gt;Sam\1YYY&lt;/code&gt;, when applied to &lt;code&gt;Fred2XXX&lt;/code&gt; this would
 generate &lt;code&gt;Sam2YYY&lt;/code&gt;.&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;&lt;code&gt;\&amp;lt;&lt;/code&gt;&lt;/td&gt;
@@ -61035,21 +61050,6 @@
 </source>
         <translation type="unfinished"></translation>
     </message>
-    <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="166"/>
-        <source>Replace and Search</source>
-        <translation>Заменить и найти</translation>
-    </message>
-    <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="176"/>
-        <source>Replace Occurrence</source>
-        <translation>Заменить вхождение</translation>
-    </message>
-    <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="186"/>
-        <source>Replace All</source>
-        <translation>Заменить все</translation>
-    </message>
 </context>
 <context>
     <name>SearchWidget</name>
@@ -61104,7 +61104,7 @@
         <translation>Выражение не найдено.</translation>
     </message>
     <message>
-        <location filename="../UI/SearchWidget.py" line="201"/>
+        <location filename="../UI/SearchWidget.py" line="217"/>
         <source>&apos;{0}&apos; was not found.</source>
         <translation>&apos;{0}&apos; не найдено.</translation>
     </message>
@@ -61138,6 +61138,11 @@
         <source>&amp;Selection only</source>
         <translation>&amp;Только выделенный</translation>
     </message>
+    <message>
+        <location filename="../UI/SearchWidget.ui" line="94"/>
+        <source>Regexp</source>
+        <translation type="unfinished">Регулярное выражение</translation>
+    </message>
 </context>
 <context>
     <name>SearchWidgetLine</name>
@@ -61176,6 +61181,11 @@
         <source>Whole word</source>
         <translation>Целое слово</translation>
     </message>
+    <message>
+        <location filename="../UI/SearchWidgetLine.ui" line="111"/>
+        <source>Regexp</source>
+        <translation type="unfinished">Регулярное &amp;выражение</translation>
+    </message>
 </context>
 <context>
     <name>SecurityPage</name>
--- a/i18n/eric6_tr.ts	Thu Nov 01 15:43:03 2018 +0100
+++ b/i18n/eric6_tr.ts	Thu Nov 01 18:46:44 2018 +0100
@@ -44934,27 +44934,27 @@
 <context>
     <name>LogViewerEdit</name>
     <message>
-        <location filename="../UI/LogView.py" line="118"/>
+        <location filename="../UI/LogView.py" line="121"/>
         <source>Clear</source>
         <translation type="unfinished">Temizle</translation>
     </message>
     <message>
-        <location filename="../UI/LogView.py" line="119"/>
+        <location filename="../UI/LogView.py" line="122"/>
         <source>Copy</source>
         <translation type="unfinished">Kopyala</translation>
     </message>
     <message>
-        <location filename="../UI/LogView.py" line="121"/>
+        <location filename="../UI/LogView.py" line="124"/>
         <source>Find</source>
         <translation type="unfinished">Bul</translation>
     </message>
     <message>
-        <location filename="../UI/LogView.py" line="123"/>
+        <location filename="../UI/LogView.py" line="126"/>
         <source>Select All</source>
         <translation type="unfinished">Hepsini Seç</translation>
     </message>
     <message>
-        <location filename="../UI/LogView.py" line="125"/>
+        <location filename="../UI/LogView.py" line="128"/>
         <source>Configure...</source>
         <translation type="unfinished">Ayarlanıyor...</translation>
     </message>
@@ -61772,32 +61772,32 @@
 <context>
     <name>SearchReplaceWidget</name>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="151"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="152"/>
         <source>Find Next</source>
         <translation>Sonrakini Bul</translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="158"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="159"/>
         <source>Find Prev</source>
         <translation>Öncekini Bul</translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="790"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="794"/>
         <source>&apos;{0}&apos; was not found.</source>
         <translation>&apos;{0}&apos; bulunamadı.</translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="919"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="925"/>
         <source>Replaced {0} occurrences.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="924"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="930"/>
         <source>Nothing replaced because &apos;{0}&apos; was not found.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="58"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="59"/>
         <source>&lt;b&gt;Find and Replace&lt;/b&gt;
 &lt;p&gt;This dialog is used to find some text and replace it with another text.
 By checking the various checkboxes, the search can be made more specific.
@@ -61807,7 +61807,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="69"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="70"/>
         <source>&lt;b&gt;Find&lt;/b&gt;
 &lt;p&gt;This dialog is used to find some text. By checking the various checkboxes,
 the search can be made more specific. The search string might be a regular
@@ -61816,32 +61816,32 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="166"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="167"/>
         <source>Replace and Search</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="176"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="177"/>
         <source>Replace Occurrence</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="186"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="187"/>
         <source>Replace All</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="80"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="81"/>
         <source>&lt;table border=&quot;0&quot;&gt;
 &lt;tr&gt;&lt;td&gt;&lt;code&gt;.&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Matches any character&lt;/td&gt;&lt;/tr&gt;
-&lt;tr&gt;&lt;td&gt;&lt;code&gt;\(&lt;/code&gt;&lt;/td&gt;&lt;td&gt;This marks the start of a region for tagging a
+&lt;tr&gt;&lt;td&gt;&lt;code&gt;(&lt;/code&gt;&lt;/td&gt;&lt;td&gt;This marks the start of a region for tagging a
 match.&lt;/td&gt;&lt;/tr&gt;
-&lt;tr&gt;&lt;td&gt;&lt;code&gt;\)&lt;/code&gt;&lt;/td&gt;&lt;td&gt;This marks the end of a tagged region.
+&lt;tr&gt;&lt;td&gt;&lt;code&gt;)&lt;/code&gt;&lt;/td&gt;&lt;td&gt;This marks the end of a tagged region.
 &lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;&lt;code&gt;\n&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Where &lt;code&gt;n&lt;/code&gt; is 1 through 9 refers to the first through ninth
 tagged region when replacing. For example, if the search string was
-&lt;code&gt;Fred\([1-9]\)XXX&lt;/code&gt; and the replace string was
+&lt;code&gt;Fred([1-9])XXX&lt;/code&gt; and the replace string was
 &lt;code&gt;Sam\1YYY&lt;/code&gt;, when applied to &lt;code&gt;Fred2XXX&lt;/code&gt; this would
 generate &lt;code&gt;Sam2YYY&lt;/code&gt;.&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;&lt;code&gt;\&amp;lt;&lt;/code&gt;&lt;/td&gt;
@@ -61915,9 +61915,9 @@
         <translation>Tüm kelimeler</translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchWidget.ui" line="99"/>
+        <location filename="../UI/SearchWidget.ui" line="94"/>
         <source>Regexp</source>
-        <translation type="obsolete">Regexp</translation>
+        <translation type="unfinished">Regexp</translation>
     </message>
     <message>
         <location filename="../Helpviewer/SearchWidget.ui" line="96"/>
@@ -61940,7 +61940,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../UI/SearchWidget.py" line="201"/>
+        <location filename="../UI/SearchWidget.py" line="217"/>
         <source>&apos;{0}&apos; was not found.</source>
         <translation type="unfinished">&apos;{0}&apos; bulunamadı.</translation>
     </message>
@@ -62012,6 +62012,11 @@
         <source>Whole word</source>
         <translation type="unfinished">Tüm kelimeler</translation>
     </message>
+    <message>
+        <location filename="../UI/SearchWidgetLine.ui" line="111"/>
+        <source>Regexp</source>
+        <translation type="unfinished">Regexp</translation>
+    </message>
 </context>
 <context>
     <name>SecurityPage</name>
--- a/i18n/eric6_zh_CN.ts	Thu Nov 01 15:43:03 2018 +0100
+++ b/i18n/eric6_zh_CN.ts	Thu Nov 01 18:46:44 2018 +0100
@@ -43832,27 +43832,27 @@
 <context>
     <name>LogViewerEdit</name>
     <message>
-        <location filename="../UI/LogView.py" line="118"/>
+        <location filename="../UI/LogView.py" line="121"/>
         <source>Clear</source>
         <translation>清除</translation>
     </message>
     <message>
-        <location filename="../UI/LogView.py" line="119"/>
+        <location filename="../UI/LogView.py" line="122"/>
         <source>Copy</source>
         <translation>复制</translation>
     </message>
     <message>
-        <location filename="../UI/LogView.py" line="121"/>
+        <location filename="../UI/LogView.py" line="124"/>
         <source>Find</source>
         <translation>查找</translation>
     </message>
     <message>
-        <location filename="../UI/LogView.py" line="123"/>
+        <location filename="../UI/LogView.py" line="126"/>
         <source>Select All</source>
         <translation>全选</translation>
     </message>
     <message>
-        <location filename="../UI/LogView.py" line="125"/>
+        <location filename="../UI/LogView.py" line="128"/>
         <source>Configure...</source>
         <translation>配置…</translation>
     </message>
@@ -60667,32 +60667,32 @@
 <context>
     <name>SearchReplaceWidget</name>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="790"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="794"/>
         <source>&apos;{0}&apos; was not found.</source>
         <translation>“{0}”未找到。</translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="919"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="925"/>
         <source>Replaced {0} occurrences.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="924"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="930"/>
         <source>Nothing replaced because &apos;{0}&apos; was not found.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="151"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="152"/>
         <source>Find Next</source>
         <translation>查找下一个</translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="158"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="159"/>
         <source>Find Prev</source>
         <translation>查找上一个</translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="58"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="59"/>
         <source>&lt;b&gt;Find and Replace&lt;/b&gt;
 &lt;p&gt;This dialog is used to find some text and replace it with another text.
 By checking the various checkboxes, the search can be made more specific.
@@ -60702,7 +60702,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="69"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="70"/>
         <source>&lt;b&gt;Find&lt;/b&gt;
 &lt;p&gt;This dialog is used to find some text. By checking the various checkboxes,
 the search can be made more specific. The search string might be a regular
@@ -60711,32 +60711,32 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="166"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="167"/>
         <source>Replace and Search</source>
         <translation>替换和搜索</translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="176"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="177"/>
         <source>Replace Occurrence</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="186"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="187"/>
         <source>Replace All</source>
         <translation>替换全部</translation>
     </message>
     <message>
-        <location filename="../QScintilla/SearchReplaceWidget.py" line="80"/>
+        <location filename="../QScintilla/SearchReplaceWidget.py" line="81"/>
         <source>&lt;table border=&quot;0&quot;&gt;
 &lt;tr&gt;&lt;td&gt;&lt;code&gt;.&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Matches any character&lt;/td&gt;&lt;/tr&gt;
-&lt;tr&gt;&lt;td&gt;&lt;code&gt;\(&lt;/code&gt;&lt;/td&gt;&lt;td&gt;This marks the start of a region for tagging a
+&lt;tr&gt;&lt;td&gt;&lt;code&gt;(&lt;/code&gt;&lt;/td&gt;&lt;td&gt;This marks the start of a region for tagging a
 match.&lt;/td&gt;&lt;/tr&gt;
-&lt;tr&gt;&lt;td&gt;&lt;code&gt;\)&lt;/code&gt;&lt;/td&gt;&lt;td&gt;This marks the end of a tagged region.
+&lt;tr&gt;&lt;td&gt;&lt;code&gt;)&lt;/code&gt;&lt;/td&gt;&lt;td&gt;This marks the end of a tagged region.
 &lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;&lt;code&gt;\n&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Where &lt;code&gt;n&lt;/code&gt; is 1 through 9 refers to the first through ninth
 tagged region when replacing. For example, if the search string was
-&lt;code&gt;Fred\([1-9]\)XXX&lt;/code&gt; and the replace string was
+&lt;code&gt;Fred([1-9])XXX&lt;/code&gt; and the replace string was
 &lt;code&gt;Sam\1YYY&lt;/code&gt;, when applied to &lt;code&gt;Fred2XXX&lt;/code&gt; this would
 generate &lt;code&gt;Sam2YYY&lt;/code&gt;.&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;&lt;code&gt;\&amp;lt;&lt;/code&gt;&lt;/td&gt;
@@ -60825,7 +60825,7 @@
         <translation>高亮全部</translation>
     </message>
     <message>
-        <location filename="../UI/SearchWidget.py" line="201"/>
+        <location filename="../UI/SearchWidget.py" line="217"/>
         <source>&apos;{0}&apos; was not found.</source>
         <translation>”{0}“未找到。</translation>
     </message>
@@ -60859,6 +60859,11 @@
         <source>&amp;Selection only</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../UI/SearchWidget.ui" line="94"/>
+        <source>Regexp</source>
+        <translation type="unfinished">正则表达式</translation>
+    </message>
 </context>
 <context>
     <name>SearchWidgetLine</name>
@@ -60897,6 +60902,11 @@
         <source>Whole word</source>
         <translation type="unfinished">全部文字</translation>
     </message>
+    <message>
+        <location filename="../UI/SearchWidgetLine.ui" line="111"/>
+        <source>Regexp</source>
+        <translation type="unfinished">正则(&amp;X)</translation>
+    </message>
 </context>
 <context>
     <name>SecurityPage</name>

eric ide

mercurial