我想找到一种通用的方式来设置正则表达式,以匹配子字符串列表,但不包括包含子字符串的字符串列表。
例如,要匹配“他的|她”,但排除“ her_cup | her_table | his_car | his_bike”。这些列表可以或多或少地随机形成。
答案 0 :(得分:0)
由于缺乏解释,我没有深入了解您想要的内容。 据我了解,您应该使用此正则表达式来限制您的模式:
(?<![^\s^,^\.])(his|her)(?![^\s^,^\.])
说明:
(?<![^\s^,^\.]) --> negative look-behind (don't allow symbols other than {space, comma, dot})
(his|her) ---> your atomic words
(?![^\s^,^\.]) ---> negative look-ahead same as the first one
正则表达式上有一些documentation
答案 1 :(得分:0)
什么是正则表达式引擎?
通常,这可以通过匹配两个想要/不需要的东西列表来解决。
有一些方法可以使用断言来构造它,但是它不是通用的。
如果使用PCRE或Perl,则可以使用回溯动词跳过
不需要的东西自动。
例如(?:her_cup|her_table|his_car|his_bik)(*SKIP)(*FAIL)|(?:his|her)
https://regex101.com/r/wv7qPo/1
否则,您必须同时匹配两个循环并将捕获组用作
标记以查看您是否匹配了一个好的。
(?:her_cup|her_table|his_car|his_bik)|(his/her)
基本规则是您必须匹配某些东西才能通过它,否则
不需要的子字符串的一部分可以包含在好的子字符串中。