正则表达式:匹配部分字符串
Regex: Match partial string
我需要一些帮助 - 我的技能不够:)(我不知道纯正则表达式是否可行)
案例:我有一些形式的文本输入:
输入 1:“abc,杂波,01;xyz,杂波,02;” (应该匹配)
input2: "abc,杂波,02;zyz,杂波,01;" (不匹配)
input3: "abc,clutter,02;abc,txt,txt,01;xyz,clutter,01"(应该匹配)
那么匹配应该是
- 以 abc 开头(输入中的任意位置)
- 介于两者之间的所有内容 - 除非 ,02;介于两者之间
- 以 ,01 结尾;
所以是这样的:
abc(.*)(?!,02;),01;
.. 但这也匹配 input2,这不是本意:)
例如,您可以使用匹配除 ,
和 ;
之外的所有字符的重复模式
\babc(?:,(?!02,)[^,;\n]+)*,01;
\babc
一个字边界,匹配abc
(?:
非捕获组
,(?!02,)[^,;\n]+
否定前瞻,断言不是 02,并匹配除 ,
;
或换行符 之外的任何字符
)*
关闭群组并可选择重复
,01;
字面匹配
如果 abc 应该只匹配一个,您还可以将其添加到否定前瞻
\babc(?:,(?!(?:02|abc),)[^,;\n]+)*,01;
我需要一些帮助 - 我的技能不够:)(我不知道纯正则表达式是否可行)
案例:我有一些形式的文本输入:
输入 1:“abc,杂波,01;xyz,杂波,02;” (应该匹配)
input2: "abc,杂波,02;zyz,杂波,01;" (不匹配)
input3: "abc,clutter,02;abc,txt,txt,01;xyz,clutter,01"(应该匹配)
那么匹配应该是
- 以 abc 开头(输入中的任意位置)
- 介于两者之间的所有内容 - 除非 ,02;介于两者之间
- 以 ,01 结尾;
所以是这样的:
abc(.*)(?!,02;),01;
.. 但这也匹配 input2,这不是本意:)
例如,您可以使用匹配除 ,
和 ;
\babc(?:,(?!02,)[^,;\n]+)*,01;
\babc
一个字边界,匹配abc(?:
非捕获组,(?!02,)[^,;\n]+
否定前瞻,断言不是 02,并匹配除,
;
或换行符 之外的任何字符
)*
关闭群组并可选择重复,01;
字面匹配
如果 abc 应该只匹配一个,您还可以将其添加到否定前瞻
\babc(?:,(?!(?:02|abc),)[^,;\n]+)*,01;