我认为这对你们很多人来说是一件简单的事情,但目前我对正则表达式的了解非常有限。我想匹配字符串中除两位数之外的所有内容。
例如:
测试22 KLO4567
量化宽松45 C2C
LOP 10 G7G400
现在我找到了匹配两位数的正则表达式:\d{2}
与以下内容匹配:
测试22 KLO4567
量化宽松45 C2C
LOP 10 G7G400
现在在我看来,将正则表达式转过来匹配除“\d{2}”之外的所有内容是相当容易的。我搜索了很多,但我似乎无法完成它。我希望这里有人可以提供帮助。
我认为这对你们很多人来说是一件简单的事情,但目前我对正则表达式的了解非常有限。我想匹配字符串中除两位数之外的所有内容。
例如:
测试22 KLO4567
量化宽松45 C2C
LOP 10 G7G400
现在我找到了匹配两位数的正则表达式:\d{2}
与以下内容匹配:
测试22 KLO4567
量化宽松45 C2C
LOP 10 G7G400
现在在我看来,将正则表达式转过来匹配除“\d{2}”之外的所有内容是相当容易的。我搜索了很多,但我似乎无法完成它。我希望这里有人可以提供帮助。
这仅在您的正则表达式引擎支持后视时才有效:
^.+?(?=\d{2})|(?<=\d{2}).+$
解释:
|分隔两个匹配的情况:
这匹配从字符串 ( ^) 开始直到\d{2}遇到的所有内容。
这匹配字符串的结尾,从两位数之后的位置开始。
如果您的正则表达式引擎不支持后视(例如 JavaScript),我认为不可能使用纯正则表达式解决方案。
您可以匹配第一部分:
^.+?(?=\d{2})
然后获取匹配结束的位置,将 2 添加到该数字,并从该索引中获取子字符串。
您是对的,拒绝在正则表达式中进行搜索通常是相当棘手的。
在你的情况下,我认为你想要[^\d{2}],但是,这很棘手,因为你的其他字符串也包含两位数字,所以你使用它的正则表达式不会选择它们。
我会使用这个正则表达式(使用PCRE 8.36但也应该在其他人中工作):
\*{2}\w*\*{2}
解释:
\*{2}.... 完全匹配“*”两次
\w* .... 匹配“单词字符”零次或无限次
找到一个非常简单的正则表达式:
^(.*?[^\d])\d{2}([^\d].*?)$
说明:
要测试此reges,您可以使用此链接
它将匹配第一次出现的两位数,但因为 OP 说只有一个它正确地完成了工作。我希望它可以与每个正则表达式引擎一起使用,因为没有使用太复杂的东西。