Regex的任何专家都可能在此数据上找到一种模式,即寻找一个完全匹配的模式,包括空格,逗号和破折号。这是我需要匹配的示例数据:



单词单词,字母数字PRT单词编号

单词单词,字母数字-PRT-数字



-word:任意大小的单词

-字母数字:3个字母和最多2个数字,因此XXX#或XXX ##

-number:最多3位数字,因此#或##或###

-PRT:是这里唯一的静态值

注意:除空格,逗号和破折号外,没有其他标点符号。



到目前为止,有些东西很接近但很笨拙,并且它不能涵盖所有基础,我在这里建立了它:http://buildregex.com/使用它们的逻辑,这有点奏效:

/(?:[^_\ ]+)(?:\ )(?:[^_\ ]+), (?:[^_\ ]+)-PRT-(?:[^_\ ]*)/gi


如果有什么可以帮助完善这一点,将受到欢迎

https://regex101.com/r/8cc52u/2

非常感谢

最佳答案

这是一种实现方法:

/^[a-z]+\s[a-z]+,\s[a-z]{3}\d{1,2}-prt-([a-z]+-){0,1}\d{1,3}$/gi



^:行首
[a-z]+:一个或多个字母
\s:任何空格字符
[a-z]+:一个或多个字母
, :,
\s:任何空格字符
[a-z]{3}:三个字母
\d{1,2}:一位或两位数
-prt-:-prt-
([a-z]+-){0,1}:一个或多个字母,后跟-,零或一次
\d{1,3}:一位,两位或三位数
$:行尾


示例:https://regex101.com/r/BhS8kM/5

或者,作为suggested by revo

/^[a-z]+ [a-z]+, [a-z]{3}\d{1,2}-prt-([a-z]+-)?\d{1,3}$/gi


示例:https://regex101.com/r/BhS8kM/7

10-05 21:04