我正在尝试将我当前的正则表达式修改为更独特。
这是我到目前为止所做的:
RE.Pattern = "(L\d{1}-\w{2}-\w{4,7}-DATA-\d{3,4})"
这样做是从一堆垃圾数据中提取以下字符串示例。仅供参考这些字符串 NOT 静态,数值等会在单元格之间发生变化。
L2-R2-TEST-DATA-4724
L1-SR-TESTING-DATA-472
L1-R2-WORKING-DATA-472
上面的字符串是我想要的,但是它也会提取下面的数据:
L1-R2-WRONGON-DATA-4725
L2-SR-RUBBISH-DATA-472
这不是我需要的,并且想知道为了修改我的正则表达式可以做什么,如果有的话,以阻止这种情况发生......
我想知道是否有可能在原始正则表达式中以某种方式静态定义TEST,TESTING和WORKING?所以我可以抓住它们而不是WRONGON和RUBBISH。
答案 0 :(得分:1)
我不确定我理解你的问题,因为你说字符串会改变,但你想知道你是否可以静态匹配特定情况。
如果您只想匹配TEST
,TESTING
和WORKING
,则可以将\w{4,7}
替换为(?:TEST|TESTING|WORKING)
,但显然不匹配{{1} }或WRONGON
。如果你想匹配任何4-7个字符的单词,除了后两个,这是另一回事。
答案 1 :(得分:1)
您可以使用非捕获组(?:
来分隔要包含的单词。此外,没有必要使用L\d{1}
,您只需使用L\d
RE.Pattern = "(L\d-\w{2}-(?:TEST(?:ING)?|WORKING)-DATA-\d{3,4})"
请参阅Live demo