def on_validateButton_clicked(self): """ Private slot to validate the entered regexp. """ regex = self.regexpLineEdit.text() if regex: re = QRegExp(regex) if self.caseSensitiveCheckBox.isChecked(): re.setCaseSensitivity(Qt.CaseSensitive) else: re.setCaseSensitivity(Qt.CaseInsensitive) re.setMinimal(self.minimalCheckBox.isChecked()) re.setPatternSyntax( self.syntaxCombo.itemData(self.syntaxCombo.currentIndex())) if re.isValid(): E5MessageBox.information( self, self.tr("Validation"), self.tr("""The regular expression is valid.""")) else: E5MessageBox.critical( self, self.tr("Error"), self.tr("""Invalid regular expression: {0}""") .format(re.errorString())) return else: E5MessageBox.critical( self, self.tr("Error"), self.tr("""A regular expression must be given."""))
def on_executeButton_clicked(self, startpos=0): """ Private slot to execute the entered regexp on the test text. This slot will execute the entered regexp on the entered test data and will display the result in the table part of the dialog. @param startpos starting position for the regexp matching """ regex = self.regexpLineEdit.text() text = self.textTextEdit.toPlainText() if regex and text: re = QRegExp(regex) if self.caseSensitiveCheckBox.isChecked(): re.setCaseSensitivity(Qt.CaseSensitive) else: re.setCaseSensitivity(Qt.CaseInsensitive) re.setMinimal(self.minimalCheckBox.isChecked()) syntax = self.syntaxCombo.itemData(self.syntaxCombo.currentIndex()) wildcard = syntax in [QRegExp.Wildcard, QRegExp.WildcardUnix] re.setPatternSyntax(syntax) if not re.isValid(): E5MessageBox.critical( self, self.tr("Error"), self.tr("""Invalid regular expression: {0}""") .format(re.errorString())) return offset = re.indexIn(text, startpos) captures = re.captureCount() row = 0 OFFSET = 5 self.resultTable.setColumnCount(0) self.resultTable.setColumnCount(3) self.resultTable.setRowCount(0) self.resultTable.setRowCount(OFFSET) self.resultTable.setItem( row, 0, QTableWidgetItem(self.tr("Regexp"))) self.resultTable.setItem(row, 1, QTableWidgetItem(regex)) if offset != -1: self.lastMatchEnd = offset + re.matchedLength() self.nextButton.setEnabled(True) row += 1 self.resultTable.setItem( row, 0, QTableWidgetItem(self.tr("Offset"))) self.resultTable.setItem( row, 1, QTableWidgetItem("{0:d}".format(offset))) if not wildcard: row += 1 self.resultTable.setItem( row, 0, QTableWidgetItem(self.tr("Captures"))) self.resultTable.setItem( row, 1, QTableWidgetItem("{0:d}".format(captures))) row += 1 self.resultTable.setItem( row, 1, QTableWidgetItem(self.tr("Text"))) self.resultTable.setItem( row, 2, QTableWidgetItem(self.tr("Characters"))) row += 1 self.resultTable.setItem( row, 0, QTableWidgetItem(self.tr("Match"))) self.resultTable.setItem( row, 1, QTableWidgetItem(re.cap(0))) self.resultTable.setItem( row, 2, QTableWidgetItem("{0:d}".format(re.matchedLength()))) if not wildcard: for i in range(1, captures + 1): if len(re.cap(i)) > 0: row += 1 self.resultTable.insertRow(row) self.resultTable.setItem( row, 0, QTableWidgetItem( self.tr("Capture #{0}").format(i))) self.resultTable.setItem( row, 1, QTableWidgetItem(re.cap(i))) self.resultTable.setItem( row, 2, QTableWidgetItem( "{0:d}".format(len(re.cap(i))))) else: self.resultTable.setRowCount(3) # highlight the matched text tc = self.textTextEdit.textCursor() tc.setPosition(offset) tc.setPosition(self.lastMatchEnd, QTextCursor.KeepAnchor) self.textTextEdit.setTextCursor(tc) else: self.nextButton.setEnabled(False) self.resultTable.setRowCount(2) row += 1 if startpos > 0: self.resultTable.setItem( row, 0, QTableWidgetItem(self.tr("No more matches"))) else: self.resultTable.setItem( row, 0, QTableWidgetItem(self.tr("No matches"))) # remove the highlight tc = self.textTextEdit.textCursor() tc.setPosition(0) self.textTextEdit.setTextCursor(tc) self.resultTable.resizeColumnsToContents() self.resultTable.resizeRowsToContents() self.resultTable.verticalHeader().hide() self.resultTable.horizontalHeader().hide() else: E5MessageBox.critical( self, self.tr("Error"), self.tr("""A regular expression and a text must""" """ be given."""))