iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Qt之QRegularExpression正则匹配怎么使用
  • 247
分享到

Qt之QRegularExpression正则匹配怎么使用

2023-07-05 17:07:04 247人浏览 泡泡鱼
摘要

这篇文章主要介绍“Qt之QRegularExpression正则匹配怎么使用”,在日常操作中,相信很多人在Qt之QRegularExpression正则匹配怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答

这篇文章主要介绍“Qt之QRegularExpression正则匹配怎么使用”,在日常操作中,相信很多人在Qt之QRegularExpression正则匹配怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Qt之QRegularExpression正则匹配怎么使用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

    一、概述

    正则表达式(regep)是处理字符串和文本的强大工具。在许多情况下使用的非常多,就比如在QString 的一些函数api接口参数都是可以传入 正则表达式的,正则表达式的使用场景有如下几种,例如:

    • 验证
      regexp可以测试子字符串是否满足某些条件,例如是整数或不包含空格。

    • 搜索
      regexp提供了比简单子字符串匹配更强大的模式匹配,例如,匹配单词mail、letter或correspondence中的一个,但不匹配单词email、mailman、mailer、letterbox等。

    • 搜索和替换
      regexp可以用不同的子字符串替换所有出现的子字符串,例如,用&amp替换所有出现的&;除了&后面已经跟着一个amp;

    • 字符串分割
      regexp可用于标识字符串应该在何处分割,例如分割制表符分隔的字符串。

    二、介绍

    QRegularExpression实现了perl兼容的正则表达式。它完全支持Unicode。有关QRegularExpression支持的正则表达式语法的概述,请参阅前面提到的pcrepattern(3)手册页。正则表达式由两部分组成:一个模式字符串和一组改变模式字符串含义的模式选项。

    你可以通过向QRegularExpression构造函数传递一个字符串来设置模式字符串:

    QRegularExpression re("a pattern");

    这将模式字符串设置为一个模式。还可以使用setPattern()函数在一个已存在的QRegularExpression对象上设置模式:

    QRegularExpression re;re.setPattern("another pattern");

    注意,根据c++字符串字面量规则,必须用另一个反斜杠转义模式字符串中的所有反斜杠:

    // matches two digits followed by a space and a WordQRegularExpression re("\\d\\d \\w+");// matches a backslashQRegularExpression re2("\\\\");

    pattern() 函数返回QRegularExpression对象当前设置的模式:

    QRegularExpression re("a third pattern");QString pattern = re.pattern(); // pattern == "a third pattern"

    三、模式选项

    可以通过设置一个或多个模式选项来修改模式字符串的含义。例如,可以通过设置QRegularExpression:: caseinsensitive选项来设置模式不区分大小写。

    你可以将这些选项传递给QRegularExpression构造函数,如下所示:

    // matches "Qt rocks", but also "QT rocks", "QT ROCKS", "qT rOcKs", etc.QRegularExpression re("Qt rocks", QRegularExpression::CaseInsensitiveOption);

    或者,你可以在一个已经存在的QRegularExpressionObject上使用setPatternOptions()函数:

    QRegularExpression re("^\\d+$");re.setPatternOptions(QRegularExpression::MultilineOption);// re matches any line in the subject string that contains only digits (but at least one)

    使用patternOptions()函数可以获得QRegularExpression对象当前设置的模式选项:

    QRegularExpression re = QRegularExpression("^two.*words$", QRegularExpression::MultilineOption| QRegularExpression::DotMatchesEverythinGoption);QRegularExpression::PatternOptions options = re.patternOptions();// options == QRegularExpression::MultilineOption | QRegularExpression::DotMatchesEverythingOption

    有关每个模式选项的更多信息,请参阅QRegularExpression::PatternOption enum文档。

    四、匹配类型和匹配选项

    match() 和 globalMatch() 函数的最后两个参数设置了匹配类型和匹配选项。match类型是QRegularExpression::MatchType enum的值;使用NORMalMatch匹配类型(默认值)选择“传统”匹配算法。还可以启用正则表达式对主题字符串的部分匹配:详细信息请参阅部分匹配部分。

    匹配选项是一个或多个QRegularExpression::MatchOption值的集合。它们改变了正则表达式与主题字符串的特定匹配方式。请参阅QRegularExpression::MatchOption枚举文档了解更多细节。

    五、正常的匹配

    要进行匹配,只需调用match()函数,传入一个要匹配的字符串。我们把这个字符串称为主题字符串。match()函数的结果是一个QRegularExpressionMatch对象,可用于检查匹配的结果。例如:

    // match two digits followed by a space and a wordQRegularExpression re("\\d\\d \\w+");QRegularExpressionMatch match = re.match("abc123 def");bool hasMatch = match.hasMatch(); // true

    如果匹配成功,(隐式的)捕获组编号0可以用来检索整个模式匹配的子字符串(参见提取捕获子字符串部分):

    QRegularExpression re("\\d\\d \\w+");QRegularExpressionMatch match = re.match("abc123 def");if (match.hasMatch()) {      QString matched = match.captured(0); // matched == "23 def"      // ...}

    也可以将偏移量作为参数传递给match()函数,让匹配从主题字符串中的任意偏移量开始。在下例中,不匹配“12abc”,因为匹配从偏移量1开始:

    QRegularExpression re("\\d\\d \\w+");QRegularExpressionMatch match = re.match("12 abc 45 def", 1);if (match.hasMatch()) {      QString matched = match.captured(0); // matched == "45 def"      // ...}

    1. 提取捕获的子字符串

    QRegularExpressionMatch对象还包含模式字符串中捕获组捕获的子字符串的信息。captured()函数将返回第n个捕获组捕获的字符串:

    QRegularExpression re("^(\\d\\d)/(\\d\\d)/(\\d\\d\\d\\d)$");QRegularExpressionMatch match = re.match("08/12/1985");if (match.hasMatch()) {      QString day = match.captured(1); // day == "08"      QString month = match.captured(2); // month == "12"      QString year = match.captured(3); // year == "1985"      // ...}

    模式中的捕获组从1开始编号,隐式捕获组0用于捕获与整个模式匹配的子串。
    也可以使用capturedStart()和capturedEnd()函数来取得每个捕获的子字符串的起始和结束偏移量(在主题字符串中):

    QRegularExpression re("abc(\\d+)def");QRegularExpressionMatch match = re.match("XYZabc123DefXYZ");if (match.hasMatch()) {      int startOffset = match.capturedStart(1); // startOffset == 6      int endOffset = match.capturedEnd(1); // endOffset == 9      // ...}

    所有这些函数都有一个重载,以QString作为参数,以便提取命名的捕获子字符串。例如:

    QRegularExpression re("^(?<date>\\d\\d)/(?<month>\\d\\d)/(?<year>\\d\\d\\d\\d)$");QRegularExpressionMatch match = re.match("08/12/1985");if (match.hasMatch()) {      QString date = match.captured("date"); // date == "08"      QString month = match.captured("month"); // month == "12"      QString year = match.captured("year"); // year == 1985}

    六、全局匹配

    全局匹配在查找给定正则表达式在主题字符串中的所有出现情况时非常有用。假设我们想从给定字符串中提取所有的单词,其中单词是匹配模式\w+的子字符串。
    QRegularExpression::globalMatch返回一个QRegularExpressionMatchIterator对象,这是一个类似java的前向迭代器,可用于迭代结果。例如:

    QRegularExpression re("(\\w+)");QRegularExpressionMatchIterator i = re.globalMatch("the quick fox");

    由于它是一个类java的迭代器,QRegularExpressionMatchIterator将指向第一个结果的前面。每个结果都以QRegularExpressionMatch对象的形式返回。如果至少有一个结果,hasNext()函数将返回true,而next()将返回下一个结果并推进迭代器。继续前面的例子:

    QStringList words;while (i.hasNext()) {      QRegularExpressionMatch match = i.next();      QString word = match.captured(1);      words << word;}// words contains "the", "quick", "fox"

    你也可以使用 peekNext() 来获得下一个结果,而无需推进迭代器。
    可以向 globalMatch() 函数传递一个起始偏移量和一个或多个匹配选项,就像普通的match()匹配一样。

    七、部分匹配

    当到达主题字符串的结尾时,得到了部分匹配,但要成功完成匹配,需要更多的字符。请注意,部分匹配通常比普通匹配效率低得多,因为无法采用匹配算法的许多优化

    在调用 QRegularExpression::match 或 QRegularExpression::globalMatch 时,必须显式地指定匹配类型PartialPreferCompleteMatch 或PartialPreferFirstMatch来请求部分匹配。如果找到了部分匹配项,那么在 match() 返回的QRegularExpressionMatch对象上调用hasMatch()函数将返回false,而 hasPartialMatch() 将返回true。

    当找到部分匹配时,不返回捕获子串,整个匹配对应的(隐式)捕获组0捕获主题字符串的部分匹配子串。

    请注意,请求部分匹配仍然可以得到完全匹配(如果找到的话);在这种情况下,hasMatch()将返回true, hasPartialMatch()返回false。QRegularExpressionMatch从来不会同时报告部分匹配和完全匹配。

    部分匹配主要适用于两种场景:实时验证用户输入和增量/多段匹配。

    1. 验证用户输入

    假设我们希望用户输入特定格式的日期,例如“MMM dd, yyyy”。我们可以使用如下模式来检查输入的有效性:

    • ^(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \d\d?, \d\d\d\d$

    (此模式不会捕获无效日期,但为了示例的目的,我们保留它)。

    我们希望在用户输入时用这个正则表达式验证输入,这样我们就可以在提交输入时报告错误(例如,用户输入了错误的键)。为此,我们必须区分以下三种情况。

    • 输入不可能与正则表达式匹配;

    • 输入确实与正则表达式匹配;

    • 输入现在还不匹配正则表达式,但如果添加更多字符,它就会匹配。

    注意,这三种情况完全代表了QValidator的可能状态(参见QValidator::State枚举)。

    特别是,在最后一种情况下,我们希望正则表达式引擎报告部分匹配:我们成功地将模式与主题字符串匹配,但匹配不能继续,因为遇到了主题的结尾。但是请注意,匹配算法应该继续并尝试所有的可能性,如果找到了一个完整的(非部分的)匹配,则应该报告这个匹配,并接受输入字符串,认为它完全有效。

    这种行为由PartialPreferCompleteMatch匹配类型实现。例如:

    QString pattern("^(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \\d\\d?, \\d\\d\\d\\d$");QRegularExpression re(pattern);QString input("Jan 21,");QRegularExpressionMatch match = re.match(input, 0, QRegularExpression::PartialPreferCompleteMatch);bool hasMatch = match.hasMatch(); // falsebool hasPartialMatch = match.hasPartialMatch(); // true

    如果与主题字符串匹配相同的正则表达式得到完全匹配,则像往常一样报告:

    QString input("Dec 8, 1985");QRegularExpressionMatch match = re.match(input, 0, QRegularExpression::PartialPreferCompleteMatch);bool hasMatch = match.hasMatch(); // truebool hasPartialMatch = match.hasPartialMatch(); // false

    另一个不同模式的例子,展示了完全匹配优于部分匹配的行为:

    QRegularExpression re("abc\\w+X|def");QRegularExpressionMatch match = re.match("abcdef", 0, QRegularExpression::PartialPreferCompleteMatch);bool hasMatch = match.hasMatch(); // truebool hasPartialMatch = match.hasPartialMatch(); // falseQString captured = match.captured(0); // captured == "def"

    在这个例子中,子模式 abc\w+X 部分匹配主题字符串;然而,子模式def完全匹配主题字符串,因此报告了完全匹配。
    如果匹配时发现了多个部分匹配(但没有完全匹配),那么QRegularExpressionMatch对象将报告第一个找到的匹配。例如:

    QRegularExpression re("abc\\w+X|defY");QRegularExpressionMatch match = re.match("abcdef", 0, QRegularExpression::PartialPreferCompleteMatch);bool hasMatch = match.hasMatch(); // falsebool hasPartialMatch = match.hasPartialMatch(); // trueQString captured = match.captured(0); // captured == "abcdef"

    2. 增量/为多段匹配

    增量匹配是部分匹配的另一种用例。假设我们想找出一个正则表达式在一个大文本中出现的次数(即匹配该正则表达式的子字符串)。为此,我们希望将大型文本以较小的块“馈送”给正则表达式引擎。一个明显的问题是,如果与正则表达式匹配的子字符串跨越两个或多个块,会发生什么。

    在这种情况下,正则表达式引擎应该报告部分匹配,以便我们可以再次匹配,添加新数据,并(最终)得到完全匹配。这意味着正则表达式引擎可能会假设在主题字符串末尾之外还有其他字符。这不是字面上的理解&mdash;&mdash;引擎永远不会尝试访问主题中最后一个字符之后的任何字符。

    QRegularExpression 在使用 PartialPreferFirstMatch 匹配类型时实现了这种行为。这种匹配类型一旦找到就报告部分匹配,而不会尝试其他匹配方案(即使它们可能导致完全匹配)。例如:

    QRegularExpression re("abc|ab");QRegularExpressionMatch match = re.match("ab", 0, QRegularExpression::PartialPreferFirstMatch);bool hasMatch = match.hasMatch(); // falsebool hasPartialMatch = match.hasPartialMatch(); // true

    这是因为在匹配交替操作符的第一个分支时,会找到部分匹配,因此匹配会停止,而不会再尝试第二个分支。另一个例子:

    QRegularExpression re("abc(def)?");QRegularExpressionMatch match = re.match("abc", 0, QRegularExpression::PartialPreferFirstMatch);bool hasMatch = match.hasMatch(); // falsebool hasPartialMatch = match.hasPartialMatch(); // true

    这显示了量词的一种看似反直觉的行为:since ?是贪婪的,那么引擎在匹配"abc"之后首先尝试继续匹配;但随后匹配到达了主题字符串的末尾,因此报告了部分匹配。在下面的例子中,这更令人惊讶:

    QRegularExpression re("(abc)*");QRegularExpressionMatch match = re.match("abc", 0, QRegularExpression::PartialPreferFirstMatch);bool hasMatch = match.hasMatch(); // falsebool hasPartialMatch = match.hasPartialMatch(); // true

    如果我们还记得引擎只希望主题字符串是我们要匹配的整个文本的一个子字符串(也就是说,如前所述,引擎假设主题字符串的结尾之外还有其他字符),那么就很容易理解这种行为了。

    由于 * 量词是贪婪的,那么报告完全匹配可能会出错,因为在当前主题 “abc” 之后可能还有其他 “abc” 出现。例如,完整文本可以是 “abcabcX” ,因此(在完整文本中)报告的正确匹配应该是 “abcabc” ; 通过只匹配开头的 “abc” ,我们得到了部分匹配。

    八、错误处理

    QRegularExpression对象可能因为模式字符串中的语法错误而无效。如果正则表达式有效,isValid()函数将返回true,否则返回false:

    QRegularExpression invalidRe("(unmatched|parenthesis");bool isValid = invalidRe.isValid(); // false

    你可以通过调用errorString()函数来获得有关特定错误的更多信息。此外,patternErrorOffset()函数将返回模式字符串中的偏移量

    QRegularExpression invalidRe("(unmatched|parenthesis");if (!invalidRe.isValid()) {      QString errorString = invalidRe.errorString(); // errorString == "missing )"      int errorOffset = invalidRe.patternErrorOffset(); // errorOffset == 22      // ...}

    如果试图匹配无效的QRegularExpressionMatch对象,那么返回的QRegularExpressionMatch对象也将无效(也就是说,它的isValid()函数将返回false)。这同样适用于尝试全局匹配。

    九、不支持perl兼容的正则表达式特性

    QRegularExpression不支持perl兼容的正则表达式中的所有特性。最值得注意的是,不支持捕获组的重复名称,并且使用它们可能会导致未定义的行为。在Qt的未来版本中,这种情况可能会改变。

    十、QRegExp用户的注意事项

    Qt 5中引入的QRegularExpression类在提供的api、支持的模式语法和执行速度方面比QRegExp有了很大的改进。最大的区别是QRegularExpression只是保存一个正则表达式,在请求匹配时不会修改它。相反,它会返回一个QRegularExpressionMatch对象,用于检查匹配的结果并提取捕获的子字符串。这同样适用于global matching和QRegularExpressionMatchIterator。其他差异概述如下。

    1. 不同的模式语法

    将正则表达式从QRegExp移植到QRegularExpression可能需要修改模式本身。

    在某些情况下,QRegExp过于宽松,接受了在使用QRegularExpression时根本无效的模式。这些模式很容易检测,因为用这些模式构建的QRegularExpression对象是无效的(cf. isValid())。

    在其他情况下,从QRegExp移植到QRegularExpression的模式可能会悄无声息地改变语义。因此,有必要回顾一下所使用的模式。沉默的不兼容最明显的例子是:

    要使用像\xHHHH这样的十六进制转义,且转义的数字超过2位,需要使用大括号。像\x2022这样的模式需要移植到\x{2022},否则它将匹配一个空格(0x20),后面跟着字符串"22"。一般来说,无论指定多少位数,都强烈建议使用带\x转义的大括号。

    像{,n}这样的0到n的量化需要移植到{0,n}以保持语义。否则,像\d{,3}这样的模式实际上匹配的是一个数字后面跟着一个精确的字符串"{,3}"。
    默认情况下,QRegExp执行unicode感知的匹配,而QRegularExpression需要一个单独的选项。更多细节见下文。

    2. 从QRegExp::exactMatch()移植

    Qt 4中的QRegExp::exactMatch()有两个用途:一是将正则表达式与主题字符串进行精确匹配,二是实现部分匹配。

    从QRegExp的精确匹配进行移植

    精确匹配指定正则表达式是否匹配整个主题字符串。例如,这些类会生成主题字符串"abc123":


    QRegExp::exactMatch()QRegularExpressionMatch::hasMatch()
    “\d+”falsetrue
    “\d+”truetrue

    精确匹配在QRegularExpression中没有体现。如果你想确保主题字符串与正则表达式完全匹配,可以使用anchoredPattern()函数来包装模式:

    QString p("a .*|pattern");// re matches exactly the pattern string pQRegularExpression re(QRegularExpression::anchoredPattern(p));

    在使用QRegExp::exactMatch()时,如果没有找到精确匹配,仍然可以通过调用QRegExp::matchedLength()来找出有多少主题字符串与正则表达式匹配。如果返回的长度等于主题字符串的长度,那么可以断定找到了部分匹配。
    QRegularExpression通过适当的MatchType显式地支持部分匹配。

    3. Global匹配

    由于QRegExp API的限制,无法正确实现全局匹配(也就是说,像Perl那样)。特别是,可以匹配0个字符的模式(如“a*”)是有问题的。
    QRegularExpression::globalMatch()正确地实现了Perl全局匹配,并且返回的迭代器可以用来检查每个结果。

    4. 支持Unicode属性

    在使用QRegExp时,字符类如\w、\d等会匹配具有相应Unicode属性的字符:例如,\d匹配具有Unicode Nd (decimal digit,十进制数字)属性的任何字符。

    在使用QRegularExpression时,这些字符类默认只匹配ASCII字符:例如,\d精确匹配0-9 ASCII范围内的字符。使用UseUnicodePropertiesOption模式选项可以改变这种行为。

    5. 通配符匹配

    在QRegularExpression中没有直接的方法来进行通配符匹配。不过,提供了wildcardToRegularExpression方法来将通配模式转换为perl兼容的正则表达式。

    6. 其他模式语法

    QRegularExpression仅支持perl兼容的正则表达式。

    7. 最小的匹配

    QRegExp::setMinimal()通过简单地反转量词的贪心实现最小匹配(QRegExp不支持惰性量词,如*?, + ?等)。而QRegularExpression则支持贪心、懒惰和占有量词。invertedgreedessoption模式选项可以用来模拟QRegExp::setMinimal()的效果:如果启用,它会反转量词的贪婪程度(贪婪的量词会变成懒惰的量词,反之亦然)。

    插入符号模式

    AnchoredMatchOption匹配选项可以用来模拟QRegExp::CaretAtOffset行为。其他的QRegExp::CaretMode模式则没有对应的选项。

    十一、调试使用QRegularExpression的代码

    QRegularExpression内部使用JIT (just in time compiler,即时编译器)来优化匹配算法的执行。JIT大量使用了自修改代码,这可能会导致Valgrind等调试工具崩溃。如果想使用QRegularExpression(例如,Valgrind的&mdash;&mdash;smc-check命令行选项)调试程序,必须启用所有自修改代码的检查。启用这种检查的缺点是程序运行速度会慢得多。

    为了避免这种情况,如果你在调试模式下编译Qt, JIT默认是禁用的。通过将QT_ENABLE_REGEXP_JIT环境变量分别设置为非零或零值,可以覆盖默认值并启用或禁用JIT使用(调试模式或释放模式)。

    到此,关于“Qt之QRegularExpression正则匹配怎么使用”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

    --结束END--

    本文标题: Qt之QRegularExpression正则匹配怎么使用

    本文链接: https://www.lsjlt.com/news/353860.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • Qt之QRegularExpression正则匹配怎么使用
      这篇文章主要介绍“Qt之QRegularExpression正则匹配怎么使用”,在日常操作中,相信很多人在Qt之QRegularExpression正则匹配怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答...
      99+
      2023-07-05
    • php怎么使用正则匹配去掉html
      php使用正则匹配去掉html方法:1、创建一个php示例文件;2、定义一个HTML标签的字符串“$html_string”;3、使用正则表达式“/<[^<]+>/”匹配所有html标签;4、使用“preg_replace...
      99+
      2023-05-24
      php
    • Notepad++怎么使用正则表达式匹配
      今天小编给大家分享一下Notepad++怎么使用正则表达式匹配的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Notepad+...
      99+
      2023-07-06
    • 怎么使用php正则匹配所有文字
      使用PHP正则表达式可以使用preg_match_all()函数来匹配所有文字。下面是一个示例代码:```php$text = "H...
      99+
      2023-09-26
      php
    • 怎么使用java正则匹配文件内容
      在Java中,可以使用正则表达式来匹配文件内容。下面是一个简单的示例,演示了如何使用Java正则表达式来匹配文件内容: import...
      99+
      2024-04-02
    • C++中使用正则匹配问题
      目录C/C++可以用正则表达式吗?若要判断一个输入的QQ号是否有效,如何判断?正则程序库(regex)正则文法(regex syntaxes)匹配(Match)搜索(Search)替...
      99+
      2022-11-13
      C++正则匹配 使用正则匹配 C++正则
    • 怎么使用oracle正则表达式匹配数字
      使用Oracle正则表达式匹配数字的方法如下: 使用REGEXP_LIKE函数进行匹配 例如,要匹配一个整数,可以使用以下表达式...
      99+
      2024-04-09
      oracle
    • 怎么使用python正则表达式匹配空格
      使用正则表达式匹配空格的方法是使用`\s`表示空白字符。下面是一个示例代码:```pythonimport re# 匹配所有空白字符pattern = r'\s'text = 'Hello World!'result = re.find...
      99+
      2023-08-11
      python
    • perl正则表达式匹配方法怎么使用
      在Perl中,可以使用`=~`操作符来匹配正则表达式。基本的语法如下:```perl$string =~ /pattern/;```...
      99+
      2023-10-07
      perl
    • php怎么利用正则只匹配汉字
      在php中,可以利用正则表达式“/[\x{4e00}-\x{9fff}]+/u”和preg_match_all()函数来只匹配汉字,语法“preg_match_all("/[\x{4e00}-\x{9fff}”。preg_matc...
      99+
      2023-05-14
      php 正则表达式
    • Android中怎么利用正则匹配图片
      这期内容当中小编将会给大家带来有关Android中怎么利用正则匹配图片,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。xml<xml version="1.0" ...
      99+
      2023-05-31
      android
    • 怎么使用正则匹配最后一个字符串
      这篇文章主要介绍了怎么使用正则匹配最后一个字符串,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。前几天遇到一个需求,输入的是<user>  &n...
      99+
      2023-06-14
    • Python中怎么使用正则表达式及正则表达式匹配规则是什么
      1 导库import re2 使用模板re_pattern = re.compile(pattern, flags=0) result = re.findall(re_pattern,string)3 说明参数描述pattern匹配的正则表...
      99+
      2023-05-14
      Python
    • Python中怎么使用正则表达式匹配方法
      本篇文章为大家展示了Python中怎么使用正则表达式匹配方法,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。测试正则表达式是否匹配字符串的全部或部分regex=ur"" ...
      99+
      2023-06-17
    • python 包之 re 正则匹配教程分享
      目录一、开头匹配二、全匹配三、部分匹配四、匹配替换五、匹配替换返回数量六、分割字符串七、匹配所有八、迭代器匹配九、编译对象十、修饰符一、开头匹配 从字符串开头开始匹配返回匹配对象;如...
      99+
      2024-04-02
    • 怎么使用PHP中全局正则表达式匹配及匹配数组元素
      这篇文章主要介绍“怎么使用PHP中全局正则表达式匹配及匹配数组元素”,在日常操作中,相信很多人在怎么使用PHP中全局正则表达式匹配及匹配数组元素问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么使用PHP中全...
      99+
      2023-06-25
    • 正则表达式怎么匹配数字
      这篇文章给大家分享的是有关正则表达式怎么匹配数字的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。高效正则表达式匹配数字实例:^[1-9]\d*$      //匹配正整数&n...
      99+
      2023-06-17
    • 怎么在python中使用正则match( )方法匹配目标
      这期内容当中小编将会给大家带来有关怎么在python中使用正则match( )方法匹配目标,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1、正则表达式作用给定的字符串是否符合正则表达式的过滤逻辑(“匹配”...
      99+
      2023-06-14
    • 怎么用java正则表达式匹配单词
      使用Java正则表达式匹配单词,可以按照以下步骤进行:1. 创建一个正则表达式模式,用于匹配单词。例如,可以使用 \b\w+\b 来...
      99+
      2023-10-18
      java
    • Notepad++使用正则表达式匹配的方法
      目录Notepad++ 使用正则表达式匹配一、常见匹配1、正则表达式匹配以某字符开头的这一行数据2、正则表达式匹配以a字符串开头,b字符串结尾的字符,中间不管3、只匹配纯数字的字符串...
      99+
      2023-05-15
      Notepad++正则表达式匹配 正则表达式匹配
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作