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