【问题标题】:Regex - Escape metacharacter正则表达式 - 转义元字符
【发布时间】:2020-07-24 15:20:46
【问题描述】:

这些天我在学习正则表达式,并遇到了我难以理解的表达式。

正则表达式:+.*?\?

abcdefghlkah    ezarekjha
a       fzfehuoa
aaaaaaaaaa$avaezvr  $    + efékjhfoéu?vrezavr?vezv$

匹配字符串 '+ efékjhfoéu?'

据我了解,字符串以“+”符号字面意思开头,然后是任何字符零次或多次。到目前为止,我很好。但是然后元字符'?在这里显示对我来说没有意义,因为它会影响以前的字符“*”。

也许是元字符“?”在影响被转义的元字符时表现不同,在我的例子中是'\?'。

在这种情况下元字符的行为是否不同?是否应该将它放在被转义以使其工作的元字符之前?

【问题讨论】:

    标签: regex


    【解决方案1】:

    当在重复字符(如{}*+...)之后使用时,? 字符会使其变得懒惰,并且匹配最少。 例如:

    • aaaabaaba 中的a+?b 将匹配[aaaab]aaba,至少可以
    • a+b in aaaabaaba 将匹配 [aaaabaab]a,最多匹配

    【讨论】:

      【解决方案2】:

      第一个问号是一个元字符,但它不像{0,1}。它将* 通配符从贪婪(尽可能多的匹配)变为懒惰(尽可能少的匹配)。第二个被转义,所以它变成了问号字符。

      我很难理解你的问题。我希望这个解释是你正在寻找的。​​p>

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-02-05
        • 2010-12-22
        • 2010-09-21
        相关资源
        最近更新 更多