我想使用Regex匹配2〜4个长度至少包含一个字母和一个*的字符串。
例如,测试字符串如下:
124 adbaad aa1 efd f * ad *** af 848
(输入的特殊语法不会包含更长的相似词,例如abc * def)
我要匹配字符串中的 f * ad 。
[a-z*]{2,4}
我在regex上面尝试过,但是没有*的字符串也匹配。
我已经在互联网上搜索了2天,但找不到解决方案。
我如何实现目标?
答案 0 :(得分:4)
在模式的开头,先搜索0-3个字母字符,后跟一个*
,然后再搜索0-3个*
,后跟一个字母字符。这样可以确保匹配从以下四个字符中至少一个字母和至少一个*
开始的点开始。然后,匹配[a-z*]{2,4}
:
(?=[a-z]{0,3}\*)(?=\*{0,3}[a-z])[a-z*]{2,4}
https://regex101.com/r/90A8rY/1
这个问题尚不清楚,但是如果您只想匹配独立的单词,请在模式的开头和结尾处向后和向前查找空格(或字符串的边缘):
(?<= |^)(?=[a-z]{0,3}\*)(?=\*{0,3}[a-z])[a-z*]{2,4}(?= |$)
^^^^^^^^ ^^^^^^^