如何在正则表达式中匹配至少包含一个字母和一个*的字符串

时间:2019-05-18 12:28:46

标签: regex

我想使用Regex匹配2〜4个长度至少包含一个字母和一个*的字符串。

例如,测试字符串如下:

  

124 adbaad aa1 efd f * ad *** af 848

(输入的特殊语法不会包含更长的相似词,例如abc * def)

我要匹配字符串中的 f * ad

[a-z*]{2,4}

我在regex上面尝试过,但是没有*的字符串也匹配。

我已经在互联网上搜索了2天,但找不到解决方案。

我如何实现目标?

1 个答案:

答案 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}(?= |$)
^^^^^^^^                                           ^^^^^^^

https://regex101.com/r/90A8rY/3