我看到正则表达式有一个新类 - QRegularExpression.它只是QRegExp的typedef,还是新类,还是什么?为什么我们需要它,我们已经有了QRegExp?
如何在 A 上设置输入验证器QLineEdit以将其限制为有效的 IP 地址?iexxxx 其中 x 必须介于 0 到 255 之间。并且 x 不能为空
我有一个字符串。例如:
QString myString = "Today is Tuesday";
Run Code Online (Sandbox Code Playgroud)
要求是:当用户键入一个字符串时,如果该字符串包含在 中myString,则该部分myString应为粗体,不区分大小写(Qt::CaseInsensitive),但myString应保留的格式(大写字符应为大写和小写字符)应该是小写)。
例如:
tu- >今天是屠esdayES- >今天是屠ES天aY- >托德AY就是Tuesd AY这是我的功能:
void myClass::setBoldForMatching( const QString &p_text )
{
QRegExp regExp( p_text, Qt::CaseInsensitive, QRegExp::RegExp );
if ( !p_text.isEmpty() )
{
if ( myString.contains( regExp ) )
{
myString = myString.replace( p_text, QString( "<b>" + p_text + "</b>" ), Qt::CaseInsensitive );
}
}
}
Run Code Online (Sandbox Code Playgroud)
这个函数是错误的,因为 …
void MainWindow::whatever(){
QRegExp rx ("<span(.*?)>");
//QString line = ui->txtNet1->toHtml();
QString line = "<span>Bar</span><span style='baz'>foo</span>";
while(line.contains(rx)){
qDebug()<<"Found rx!";
line.remove (rx);
}
}
Run Code Online (Sandbox Code Playgroud)
我已经使用这个工具在线测试了正则表达式.使用给定的正则表达式字符串和<span style="foo">Bar</span>工具的示例文本说它应该在字符串中找到正则表达式.但是,在我的Qt代码中,我永远不会进入我的while循环.
我以前从未用过Qt或任何其他语言的正则表达式.有人能提供一些帮助吗?谢谢!
[edit]所以我发现errorString()如果正则表达式无效,QRegExp有一个函数可以使用.我输出这个并看到:"糟糕的重复语法".不太确定这意味着什么.当然,谷歌搜索"糟糕的重复语法"提出了...这篇文章.该死的谷歌,你快.
我有一个QString,我用""替换了"="和",".现在我想编写一个正则表达式,它将删除某个字符串的每次出现,紧接着是包含1到2个字符长数字的括号.例如:"mat(1)= 5,mat(2)= 4,mat(3)= 8"将变为"5 4 8"
所以这就是我到目前为止所做的:
text = text.replace("=", " ");
text = text.replace(",", " ");
text = text.remove( QRegExp( "mat\([0-9]{1,2}\)" ) );
Run Code Online (Sandbox Code Playgroud)
正则表达式不正确,我该如何修复它来做我想要的?谢谢!
我尝试了以下正则表达式来删除括号之间的{anything}(希望括号本身)!
mystr.remove(QRegExp("\\{(.*?)\\}"));
mystr.remove(QRegExp("\{(.*?)\}"));
Run Code Online (Sandbox Code Playgroud)
什么都没有删除
我正在为QLineEdit写一个正则表达式检查器,我正在使用QRegExp.
我已经写了一个int值检查器:
QRegExp *expression_ = new QRegExp("^(0|[1-9]{1,1}[0-9]{0,9});
Run Code Online (Sandbox Code Playgroud)
但我有双重值的并发症,更具体,我不能分开这个数字的情况.FE 0.210或0.001.
请帮我实现双重值的此功能.提前致谢.
如何写入QLineEdit(0.0 - 5.0) 范围内的浮点数?我使用 qregexp 来完成这样的任务,例如QRegExp a("([a-zA-Z]{3,30})")写入用户名,但不知道写入浮点数。
我无法识别潜在的哈希字符.我使用以下模式来识别表单的文件:id-1321952010.xml.其中一些文件可能在id之前包含#:因此:#id-1321952010.xml也需要被选中.
目前我的初步案例是:
QRegExp rxLogFileFormat("\\b^[a-zA-Z]+\\-[0-9]{10,10}\\.[xml]{3,3}$\\b");
Run Code Online (Sandbox Code Playgroud)
我试过添加'#?' 在边界之前但无法使其正常工作,任何人都可以提供帮助.
我想得到第一个字Qstring.
例如String1 = "Read from file1".我想提取string2 = "Read".我想基于空格提取子字符串.
如果我遇到我的第一个空格string1,我需要的那部分string1来string2.
我正在使用##\b\S+?\b##正则表达式来查找以##开头和结尾的单词,该单词会找到以下内容,
##YourFriend##
Run Code Online (Sandbox Code Playgroud)
当单词之类的单词之间有空格时,此功能不起作用
##Your Friend##
Run Code Online (Sandbox Code Playgroud)
我需要一个在两种情况下都可以使用的正则表达式,可以找到两种情况,
##YourFriend##
##Your Friend##
Run Code Online (Sandbox Code Playgroud)
我尝试使用\swhich来查找空白,但是它不起作用。
我有一个问题,我有一个RegEx,[^/\&\?] +.\ w {3,4}(?=([\?&].*$ | $)),但我无法得到它使用下面[1]中的功能.
[1] - http://doc.qt.io/qt-5/qregexp.html
这是我试过的代码:
QRegExp rx("[^/\\\\&\\?]+\\.\\w{3,4}(?=([\\?&].*$|$))", Qt::CaseInsensitive, QRegExp::RegExp);
std::ostringstream list;
int pos = 0;
while ((pos = rx.indexIn(url, pos)) != -1) {
list << rx.cap(1).toStdString();
pos += rx.matchedLength();
}
return list;
Run Code Online (Sandbox Code Playgroud)
它应该从URL中提取文件名,但只返回任何内容.我不确定出了什么问题.有人可以提供帮助吗?先感谢您.