<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div><span style="font-family:times new roman,serif">Hi Maurizio and David<br></span></div><div><span style="font-family:times new roman,serif">You both are correct ,but if you attract on the code :When you copy the last character in "<font size="6"><span style="color:rgb(0,0,255)">قَالَ <font size="2">" <font color="#000000">we call it fatha " </font></font></span></font><font size="6"><span style="color:rgb(0,0,255)">ــَ <font size="2"><font color="#000000">" and put it completely in the lineedit.text() then it will find it correctly without (</font></font></span></font><font size="6"><span style="color:rgb(0,0,255)"><font size="2"><font color="#000000">r'\b{}\b').<br></font></font></span></font></span></div><div><span style="font-family:times new roman,serif"><font size="6"><span style="color:rgb(0,0,255)"><font size="2"><font color="#000000">The problem here is with that last one character which is sometimes different for example if I change the string to this :<br></font></font></span></font><br><font size="6"><span style="color:rgb(0,0,255)"><font size="2"><font color="#000000">m = "<span style="color:rgb(0,128,128);font-weight:bold">قَالَتْ  قَالَ فَقَالُو</span><span style="color:rgb(0,128,128);font-weight:bold">ا۟</span><span style="color:rgb(0,128,128);font-weight:bold"> قَالُو</span><span style="color:rgb(0,128,128);font-weight:bold">ا۟</span><span style="color:rgb(0,128,128);font-weight:bold"> قَالَ  قَالُوٓ</span><span style="color:rgb(0,128,128);font-weight:bold">ا۟</span><span style="color:rgb(0,128,128);font-weight:bold"> قَالَتَا  </span><span style="color:rgb(0,128,128);font-weight:bold">ٱ</span><span style="color:rgb(0,128,128);font-weight:bold">لْقَالِينَ</span> </font></font></span></font><font size="6"><span style="color:rgb(0,0,255)"><font size="2"><font color="#000000"><font size="6"><span style="color:rgb(0,0,255)"><font size="2"><font color="#000000"><span style="color:rgb(0,128,128);font-weight:bold"> قَال<font color="#000000"> </font></span></font></font></span></font></font></font></span></font><font size="6"><span style="color:rgb(0,0,255)"><font size="2"><font color="#000000"><font size="6"><span style="color:rgb(0,0,255)"><font size="2"><font color="#000000"><span style="color:rgb(0,128,128);font-weight:bold"><font color="#000000"><font size="6"><span style="color:rgb(0,0,255)"><font size="2"><font color="#000000"><span style="color:rgb(0,128,128);font-weight:bold"> قَال<font color="#000000">ِ</font></span></font></font></span></font></font></span></font></font></span></font> "<br></font></font></span></font></span></div><div><span style="font-family:times new roman,serif"><font size="6"><span style="color:rgb(0,0,255)"><font size="2"><font color="#000000">then we can not use </font></font></span></font><font size="6"><span style="color:rgb(0,0,255)"><font size="2"><font color="#000000"><font size="6"><span style="color:rgb(0,0,255)"><font size="2"><font color="#000000">(</font></font></span></font><font size="6"><span style="color:rgb(0,0,255)"><font size="2"><font color="#000000">r'\b{}\b').<br></font></font></span></font></font></font></span></font></span></div><div><span style="font-family:times new roman,serif"><font size="6"><span style="color:rgb(0,0,255)"><font size="2"><font color="#000000"><font size="6"><span style="color:rgb(0,0,255)"><font size="2"><font color="#000000">Dear </font></font></span></font></font></font></span></font></span><span style="font-family:times new roman,serif"> Maurizio I will take your advice But the problem here maybe related to PYQT.QTGUI.Qtextcursor and Qtextedit.textcursor <br></span></div><div><span style="font-family:times new roman,serif">if  you say that it is not related then I will not ask anything else .and as you know the Arabic  help texts in python are not so helpful. <br></span></div><div><span style="font-family:times new roman,serif">Thanks anyway but let me know about that I don't try to post other problems like this.<br></span></div><div><pre style="background-color:rgb(255,255,255);color:rgb(0,0,0);font-family:"DejaVu Sans Mono";font-size:9.1pt"><br><span style="font-family:times new roman,serif"></span></pre></div></div></div></div></div></div></div></div></div><br><div class="gmail_quote"><div dir="ltr">On Sun, Sep 2, 2018 at 12:33 AM Maurizio Berti <<a href="mailto:maurizio.berti@gmail.com" target="_blank">maurizio.berti@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div>Simple regexes like that one will match all sequences of characters found; if you want to find those character as a single "word", you will need to use word boundaries.</div><div><br></div><div>Change the pattern init to this and it works (at least, according to the string you gave):<br><br></div><div><font face="monospace, monospace">pattern = QtCore.QRegExp(r'\b{}\b'.format(self.lineEdit.text()))</font><br></div><div><br></div><div>Have a look at this, too: <a href="https://stackoverflow.com/questions/40731058/regex-match-arabic-keyword" target="_blank">https://stackoverflow.com/questions/40731058/regex-match-arabic-keyword</a><br></div><div><br>As a side note, forgive my bluntness, but you might want to read some more documentation about regex and right-to-left languages practices.</div><div>The latest questions you asked were not python nor qt related at all, and, as you might understand, most of the people on this mailing list don't even know how arabic language works; a bit of context might be useful, so that even people not experienced with those language might help too.</div><div><br>Also, try to simplify examples by limiting code to what is really related to your issue: those geometry, font and widget settings won't help anyone reading your code. The same example could have been written in less than half lines, and would have been much more readable: easier to read is easier to understand and easier to help.<br>Finally, avoid mixing the way you import modules. You should import from the main module _OR_ from the submodules. While it doesn't change much in terms of computation, it decreases the possibility of bugs and improves readibility, which is better for everybody reading your code, including you :-)</div><div><br></div><div>Maurizio</div><div><br></div><div><br></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">2018-09-01 20:33 GMT+02:00 Maziar Parsijani <span dir="ltr"><<a href="mailto:maziar.parsijani@gmail.com" target="_blank">maziar.parsijani@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr">I want to select 2 "<span style="color:rgb(0,128,128);font-weight:bold">قَالَ</span>" in m = "<span style="color:rgb(0,128,128);font-weight:bold">قَالَتْ  قَالَ فَقَالُو</span><span style="color:rgb(0,128,128);font-weight:bold;font-family:"Amiri Quran Colored"">ا۟</span><span style="color:rgb(0,128,128);font-weight:bold"> قَالُو</span><span style="color:rgb(0,128,128);font-weight:bold;font-family:"Amiri Quran Colored"">ا۟</span><span style="color:rgb(0,128,128);font-weight:bold"> قَالَ  قَالُوٓ</span><span style="color:rgb(0,128,128);font-weight:bold;font-family:"Amiri Quran Colored"">ا۟</span><span style="color:rgb(0,128,128);font-weight:bold"> قَالَتَا  </span><span style="color:rgb(0,128,128);font-weight:bold;font-family:"Aldhabi"">ٱ</span><span style="color:rgb(0,128,128);font-weight:bold">لْقَالِينَ</span>  " but with the below code it selects all words which contains " "<span style="color:rgb(0,128,128);font-weight:bold">قَالَ</span>"  <br></div><div>Now what is the problem here?<br></div><div>I have to put spaces before and after pattern1 for such thing but it doesn't work for me.<br><pre style="background-color:rgb(255,255,255);color:rgb(0,0,0);font-family:"DejaVu Sans Mono";font-size:9.1pt">pattern1 = <span style="color:rgb(0,128,128);font-weight:bold">" {0} "</span>.format(<span style="color:rgb(148,85,141)">self</span>.lineEdit.text())<span class="gmail-m_-2942892887450796706m_5257909204618472470m_-3820615639630079966m_-5172197483062635484gmail-"> </span></pre></div><div dir="ltr"><span style="color:rgb(0,128,128);font-weight:bold"></span></div><div><span style="color:rgb(0,128,128);font-weight:bold"><br></span></div><div dir="ltr"><pre style="background-color:rgb(255,255,255);color:rgb(0,0,0);font-family:"DejaVu Sans Mono";font-size:9.1pt"><span style="color:rgb(0,0,128);font-weight:bold">from </span>PyQt5 <span style="color:rgb(0,0,128);font-weight:bold">import </span>QtCore, QtGui, QtWidgets<br><span style="color:rgb(0,0,128);font-weight:bold">from </span>PyQt5.QtWidgets <span style="color:rgb(0,0,128);font-weight:bold">import </span>QApplication, QTextEdit<br><span style="color:rgb(0,0,128);font-weight:bold">from </span>PyQt5.QtGui <span style="color:rgb(0,0,128);font-weight:bold">import </span>QTextDocument, QTextDocumentFragment<br><span style="color:rgb(0,0,128);font-weight:bold">from </span>PyQt5 <span style="color:rgb(0,0,128);font-weight:bold">import </span>QtCore, QtGui, QtWidgets<br><span style="color:rgb(0,0,128);font-weight:bold">import </span>sys<br><span style="color:rgb(0,0,128);font-weight:bold">from </span>PyQt5.QtWidgets <span style="color:rgb(0,0,128);font-weight:bold">import </span>QDialog, QApplication<br><span style="color:rgb(0,0,128);font-weight:bold">class </span>AppWindow(QDialog):<br>    <span style="color:rgb(0,0,128);font-weight:bold">def </span><span style="color:rgb(178,0,178)">__init__</span>(<span style="color:rgb(148,85,141)">self</span>):<br>        <span style="color:rgb(0,0,128)">super</span>().<span style="color:rgb(178,0,178)">__init__</span>()<br>        <span style="color:rgb(148,85,141)">self</span>.setObjectName(<span style="color:rgb(0,128,128);font-weight:bold">"Dialog"</span>)<br>        <span style="color:rgb(148,85,141)">self</span>.resize(<span style="color:rgb(0,0,255)">800</span>, <span style="color:rgb(0,0,255)">600</span>)<br>        <span style="color:rgb(148,85,141)">self</span>.lineEdit = QtWidgets.QLineEdit(<span style="color:rgb(148,85,141)">self</span>)<br>        <span style="color:rgb(148,85,141)">self</span>.lineEdit.setGeometry(QtCore.QRect(<span style="color:rgb(0,0,255)">70</span>, <span style="color:rgb(0,0,255)">70</span>, <span style="color:rgb(0,0,255)">211</span>, <span style="color:rgb(0,0,255)">21</span>))<br>        <span style="color:rgb(148,85,141)">self</span>.lineEdit.setObjectName(<span style="color:rgb(0,128,128);font-weight:bold">"lineEdit"</span>)<br>        <span style="color:rgb(148,85,141)">self</span>.pushButton = QtWidgets.QPushButton(<span style="color:rgb(148,85,141)">self</span>)<br>        <span style="color:rgb(148,85,141)">self</span>.pushButton.setGeometry(QtCore.QRect(<span style="color:rgb(0,0,255)">130</span>, <span style="color:rgb(0,0,255)">110</span>, <span style="color:rgb(0,0,255)">83</span>, <span style="color:rgb(0,0,255)">28</span>))<br>        <span style="color:rgb(148,85,141)">self</span>.pushButton.setObjectName(<span style="color:rgb(0,128,128);font-weight:bold">"pushButton"</span>)<br>        <span style="color:rgb(148,85,141)">self</span>.SearchResults = QtWidgets.QTextEdit(<span style="color:rgb(148,85,141)">self</span>)<br>        <span style="color:rgb(148,85,141)">self</span>.SearchResults.setGeometry(QtCore.QRect(<span style="color:rgb(0,0,255)">130</span>, <span style="color:rgb(0,0,255)">140</span>, <span style="color:rgb(0,0,255)">500</span>, <span style="color:rgb(0,0,255)">400</span>))<br>        font = QtGui.QFont()<br>        font.setFamily(<span style="color:rgb(0,128,128);font-weight:bold">"Amiri"</span>)<br>        font.setPointSize(<span style="color:rgb(0,0,255)">12</span>)<br>        <span style="color:rgb(148,85,141)">self</span>.SearchResults.setFont(font)<br>        <span style="color:rgb(148,85,141)">self</span>.SearchResults.setToolTipDuration(<span style="color:rgb(0,0,255)">0</span>)<br>        <span style="color:rgb(148,85,141)">self</span>.SearchResults.setReadOnly(<span style="color:rgb(0,0,128);font-weight:bold">True</span>)<br>        <span style="color:rgb(148,85,141)">self</span>.SearchResults.setAutoFormatting(QtWidgets.QTextEdit.AutoAll)<br>        <span style="color:rgb(148,85,141)">self</span>.SearchResults.setObjectName(<span style="color:rgb(0,128,128);font-weight:bold">"SearchResults"</span>)<br><br>        <span style="color:rgb(148,85,141)">self</span>.retranslateUi(<span style="color:rgb(148,85,141)">self</span>)<br>        QtCore.QMetaObject.connectSlotsByName(<span style="color:rgb(148,85,141)">self</span>)<br>    <span style="color:rgb(0,0,128);font-weight:bold">def </span>find1(<span style="color:rgb(148,85,141)">self</span>):<br>            m = <span style="color:rgb(0,128,128);font-weight:bold">"  قَالَتْ  قَالَ فَقَالُو</span><span style="color:rgb(0,128,128);font-weight:bold;font-family:"Amiri Quran Colored"">ا۟</span><span style="color:rgb(0,128,128);font-weight:bold"> قَالُو</span><span style="color:rgb(0,128,128);font-weight:bold;font-family:"Amiri Quran Colored"">ا۟</span><span style="color:rgb(0,128,128);font-weight:bold"> قَالَ  قَالُوٓ</span><span style="color:rgb(0,128,128);font-weight:bold;font-family:"Amiri Quran Colored"">ا۟</span><span style="color:rgb(0,128,128);font-weight:bold"> قَالَتَا  </span><span style="color:rgb(0,128,128);font-weight:bold;font-family:"Aldhabi"">ٱ</span><span style="color:rgb(0,128,128);font-weight:bold">لْقَالِينَ    "<br></span><span style="color:rgb(0,128,128);font-weight:bold">            </span><span style="color:rgb(148,85,141)">self</span>.SearchResults.append(<span style="color:rgb(0,128,128);font-weight:bold">'{0} '</span>.format(m))<br><br><br>            cursor = <span style="color:rgb(148,85,141)">self</span>.SearchResults.textCursor()<br>            format = QtGui.QTextCharFormat()<br>            format.setForeground(QtGui.QBrush(QtGui.QColor(<span style="color:rgb(0,128,128);font-weight:bold">"red"</span>)))<br><br>            pattern1 = <span style="color:rgb(0,128,128);font-weight:bold">"{0}"</span>.format(<span style="color:rgb(148,85,141)">self</span>.lineEdit.text())<br>            regex = QtCore.QRegExp(pattern1)<br>            pos = <span style="color:rgb(0,0,255)">0<br></span><span style="color:rgb(0,0,255)">            </span>index = regex.indexIn(<span style="color:rgb(148,85,141)">self</span>.SearchResults.toPlainText(), pos)<br>            tedad = <span style="color:rgb(0,0,255)">0<br></span><span style="color:rgb(0,0,255)">            </span><span style="color:rgb(0,0,128);font-weight:bold">while </span>(index != -<span style="color:rgb(0,0,255)">1</span>):<br>                cursor.setPosition(index)<br>                cursor.movePosition(QtGui.QTextCursor.WordLeft, QtGui.QTextCursor.KeepAnchor)<br>                cursor.mergeCharFormat(format)<br>                pos = index + regex.matchedLength()<br>                index = regex.indexIn(<span style="color:rgb(148,85,141)">self</span>.SearchResults.toPlainText(), pos)<br>                <span style="color:rgb(0,0,128);font-weight:bold">if </span>regex.isValid():<br>                    tedad += <span style="color:rgb(0,0,255)">1<br></span><span style="color:rgb(0,0,255)">            </span><span style="color:rgb(128,128,128)">nmayesh </span>= (<span style="color:rgb(0,128,128);font-weight:bold">"{}"</span>.format(tedad))<br>            <span style="color:rgb(148,85,141)">self</span>.SearchResults.append(<span style="color:rgb(0,128,128);font-weight:bold">"{}"</span>.format(tedad))<br><br>    <span style="color:rgb(0,0,128);font-weight:bold">def </span>retranslateUi(<span style="color:rgb(148,85,141)">self</span>, <span style="color:rgb(128,128,128)">Dialog</span>):<br>        _translate = QtCore.QCoreApplication.translate<br>        <span style="color:rgb(148,85,141)">self</span>.setWindowTitle(_translate(<span style="color:rgb(0,128,128);font-weight:bold">"Dialog"</span>, <span style="color:rgb(0,128,128);font-weight:bold">"Dialog"</span>))<br>        <span style="color:rgb(148,85,141)">self</span>.pushButton.setText(_translate(<span style="color:rgb(0,128,128);font-weight:bold">"Dialog"</span>, <span style="color:rgb(0,128,128);font-weight:bold">"PushButton"</span>))<br>        <span style="color:rgb(148,85,141)">self</span>.pushButton.clicked.connect(<span style="color:rgb(148,85,141)">self</span>.find1)<br><br>app = QApplication(sys.argv)<br>w = AppWindow()<br>w.show()<br>sys.exit(app.exec_())<br></pre></div></div></div></div></div></div></div></div></div></div></div></div></div></div>
<br>_______________________________________________<br>
PyQt mailing list    <a href="mailto:PyQt@riverbankcomputing.com" target="_blank">PyQt@riverbankcomputing.com</a><br>
<a href="https://www.riverbankcomputing.com/mailman/listinfo/pyqt" rel="noreferrer" target="_blank">https://www.riverbankcomputing.com/mailman/listinfo/pyqt</a><br></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail-m_-2942892887450796706m_5257909204618472470m_-3820615639630079966gmail_signature">È difficile avere una convinzione precisa quando si parla delle ragioni del cuore. - "Sostiene Pereira", Antonio Tabucchi<br><a href="http://www.jidesk.net" target="_blank">http://www.jidesk.net</a></div>
</div></div>
</blockquote></div></div></div></div>