我认为这对很多人来说都是一件简单的事情,但目前我对正则表达式的知识非常有限。我希望匹配除字符串中的两位数字之外的所有内容。
例如:
TEST 22的 KLO4567
QE 45的 C2C
LOP 10的 G7G400
现在我发现正则表达式匹配两位数字: \ d {2}
符合以下条件:
TEST的 22 KLO4567
QE的 45 C2C
LOP的 10 G7G400
现在在我看来,将这个正则表达式转换为匹配所有内容相当容易但是" \ d {2}"。我搜索了很多,但我似乎无法完成它。我希望这里有人可以提供帮助。
答案 0 :(得分:2)
这仅适用于正则表达式引擎支持后面的内容:
^.+?(?=\d{2})|(?<=\d{2}).+$
说明:
|
将两种情况分开:
这匹配从字符串开头(^
)到遇到\d{2}
的所有内容。
这匹配字符串的结尾,从两位数之后的位置开始。
如果您的正则表达式引擎不支持外观(例如JavaScript),我认为不可能使用纯正则表达式解决方案。
您可以匹配第一部分:
^.+?(?=\d{2})
然后获取匹配结束的位置,将该数字加2,并从该索引中获取子字符串。
答案 1 :(得分:1)
你正确拒绝正则表达式中的搜索通常是相当棘手的。
在你的情况下,我认为你想拥有[^\d{2}]
,但是,这很棘手,因为你的其他字符串也包含两位数,所以使用它的正则表达式不会选择它们。
我会使用这个正则表达式(使用PCRE 8.36
,但也应该在其他人中使用):
\*{2}\w*\*{2}
说明:
\*{2}
....完全匹配“*”两次
\w*
....匹配“字符”零或无限次
答案 2 :(得分:0)
发现一个正则表达式很简单:
^(.*?[^\d])\d{2}([^\d].*?)$
解释:
要测试此值,您可以使用此link
它将匹配第一次出现的双位数,但因为OP表示只有一位正确完成了这项工作。我希望它可以与每个正则表达式引擎一起使用,因为没有太复杂的使用。