正则表达式以特定顺序匹配一组字符中的至少一个
Regex match at least one from set of characters in specific order
我有一个包含天子字符串的字符串。此子字符串包含表示每个适用的工作日的单个字符,并且可以包含工作日的任意组合,或者在没有工作日的情况下包含字母 N。每个工作日都由第一个字符表示,除了星期四是一个R,并且工作日必须按顺序。
我试图构建一个正则表达式来匹配这个子字符串,但我编写的正则表达式匹配空白字符串。
我的正则表达式是:^ABC ((M?T?W?R?F?)|N) ABC$
我希望这个匹配:
ABC M ABC
ABC MWR ABC
ABC TRF ABC
ABC N ABC
等...
但不匹配:
ABC Z ABC
ABC TRM ABC
正则表达式这样做,但也匹配:
ABC ABC
有人有快速修复方法吗?
编辑:我忘了提及,由于主机环境的限制,我只能使用 Microsoft VBScript Regular Expressions 5.5 库及其子集。
您可以使用前瞻性正则表达式:
^ABC (?=\S)(M?T?W?R?F?|N) ABC$
(?=\S)
是为了确保下一个字符不是 space.
RegEx Demo
这也可以实现为:
^ABC (M?T?W?R?F?|N)(?<=\S) ABC$
我有一个包含天子字符串的字符串。此子字符串包含表示每个适用的工作日的单个字符,并且可以包含工作日的任意组合,或者在没有工作日的情况下包含字母 N。每个工作日都由第一个字符表示,除了星期四是一个R,并且工作日必须按顺序。
我试图构建一个正则表达式来匹配这个子字符串,但我编写的正则表达式匹配空白字符串。
我的正则表达式是:^ABC ((M?T?W?R?F?)|N) ABC$
我希望这个匹配:
ABC M ABC
ABC MWR ABC
ABC TRF ABC
ABC N ABC
等...
但不匹配:
ABC Z ABC
ABC TRM ABC
正则表达式这样做,但也匹配:
ABC ABC
有人有快速修复方法吗?
编辑:我忘了提及,由于主机环境的限制,我只能使用 Microsoft VBScript Regular Expressions 5.5 库及其子集。
您可以使用前瞻性正则表达式:
^ABC (?=\S)(M?T?W?R?F?|N) ABC$
(?=\S)
是为了确保下一个字符不是 space.
RegEx Demo
这也可以实现为:
^ABC (M?T?W?R?F?|N)(?<=\S) ABC$