我想使用正则表达式匹配至少包含一个字母和一个 * 的 2~4 长度字符串。
例如,测试字符串如下:
124 adbaad aa1 efd f*ad *** af 848
(输入的特殊语法不会包含更长的相似词,例如 abc*def)
我要配 f*ad 在字符串中。
[a-z*]{2,4}
我尝试了上面的正则表达式,但没有 * 的字符串也匹配。
我已经在互联网上搜索了 2 天,但找不到解决方案。
我怎样才能实现目标?
最佳答案
在模式的开头,先行查找 0-3 个字母字符,然后是 *
, 并向前看 0-3 *
s 后跟一个字母字符。这确保了比赛从一个点开始,后跟至少一个字母和至少一个 *
在接下来的 4 个字符内。然后,匹配 [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}(?= |$)
^^^^^^^^ ^^^^^^^
https://regex101.com/r/90A8rY/3
关于regex - 如何匹配正则表达式中至少包含一个字母和一个 * 的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56198940/