Solved: Regex expression ?? <tag>...</tag>
-
Hello guys,
I am trying to catch a string from inside another string. The string to be catched is as follows:<line> ..... some text .... </spin>
I want to catch the some text. Could you please help me with the regexp?
I tried the following but does not work
@
QString output="embed'><span class=SpellE><span lang=AR-SA style=' '><line>نتمكيبسشبسشكنتمنسيشم</span></span>";QRegExp exp ("<line>.*</spin>"); int index = exp.indexIn(output); qDebug () << "regexp" << output << "index=" << index; QStringList lineslist; QString linestr; while (index >= 0) { int length = exp.matchedLength(); linestr=output.mid(index,length); qDebug() << "linestring = " << linestr; lineslist.append(linestr); index = exp.indexIn(output, index + length); }
@
-
You have </span> in your string instead of </spin> or you have </spin> in your regex instead of </span>.
-
writing mistake, it is </span> .. thank you for the note. I fixed it
@
QRegExp [removed]"<line>.*</span>");
@how ever this does get all the text for example, if i have <line> ..... </span> <span1> </span>
It produces all the text till the last </span> but i need the first </span> after the <line> tag
-
I don't know if Qt supports it, but .*? is a non-greedy expression which should be what you are searching for.
-
You want the setMinimal() method in QRegExp.
-
thank you guys, i found i
@
QRegExp [removed]"<line>[^<]*</span>");
@But this outputs ex:
"<line>بببببببببيب</span>"is it possible to trim the <line> and the </span> in the same expression?
to spare an extra line QString.mid ... -
See the section in the QRegExp documentation on capturing text. The first paragraph shows how you can replace the call to mid with a call to exp.cap(). Alternately you could adjust the parameters on the call to mid since you want to strip out fixed length segments at the ends.
-
Wouldn't it make much more sense to use a real parser, like the XML module in Qt? RegExps are useful, but they are a poor substitute for parsers. What happens, for example, if your input text has multiple <span></span> pairs? What if these are nested?
-
Andre: thank you for your comment, however it does not need an xml parser, since i don't have multiple nested tags. Just only <line> and the required text is till the next first </span>
Guys,
I have the string now in the ascii format, I need to convert it to the QString type so that i can match the characters with each pressed key in my game.
@"نتمك" @
Edited: these vaues after &# are decimal representation of unicode values
-
can somebody help me in the last point?
I need to split the numbers, convert each to hex
@
int a1 = 1606;
QString b = QString::number( a1 , 16 ); // b=0628
@put \x before and after the 2nd digit to get \x06\28
@
QString test1 = QString::fromUtf8("\x06\x28"); // è encoded in UTF8
@is there an easier way to do it?