正则表达式匹配子字符串列表,但不包括包含子字符串的字符串列表

时间:2019-01-26 20:32:33

标签: regex

我想找到一种通用的方式来设置正则表达式,以匹配子字符串列表,但不包括包含子字符串的字符串列表。

例如,要匹配“他的|她”,但排除“ her_cup | her_table | his_car | his_bike”。这些列表可以或多或少地随机形成。

2 个答案:

答案 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 

Demo

正则表达式上有一些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)

基本规则是您必须匹配某些东西才能通过它,否则
不需要的子字符串的一部分可以包含在好的子字符串中。

相关问题