正则表达式可将所有内容与特定单词匹配

时间:2019-05-04 02:51:34

标签: regex

我想进行正则表达式替换。这是我使用的模式:

.*?fee.*?$|.*?charge.*?$

匹配所需的行

  • 费用的信用卡”
  • 收取利息”

但是,它在咖啡和进纸器上也是匹配的(我想具体说明它与“咖啡”或“饲料”行不匹配,我该如何专门防止这些匹配,但仍能处理诸如费用,收费之类的案件)< / p>

  • “ cof 费用商店”
  • 喂养牛牛

enter image description here

2 个答案:

答案 0 :(得分:3)

您可以将alternation与2 word boundaries \b结合使用,以防止单词成为较大单词的一部分。

对于示例数据,如果要匹配单个或单个或复数版本,可以通过使用问号使结尾的s为可选。

^.*\b(?:fees?|charges?)\b.*$
  • ^字符串的开头
  • .*\b匹配除换行符和单词边界之外的所有字符
  • (?:fees?|charges?)匹配列出的任何内容,然后匹配可选的s
  • \b.*字边界,匹配除换行符0次以上以外的所有字符
  • $声明字符串的结尾

Regex demo

答案 1 :(得分:1)

如果您只是想匹配这两行,则可以简单地使用类似于以下的表达式:

^(fees|charges).+$

enter image description here

如果您希望匹配某些单词,可以将边界添加到类似于this expression的第一组:

^\b(fees|fee|charge|charges)\b(.+)$

enter image description here

如果您的模式可能在字符串输入的中间,则可以在左侧添加另一个组,类似于this expression

(?:.+|)\b(fees|fee|charge|charges)\b(?:.+|)$

enter image description here

此图显示了这样的表达式如何工作:

enter image description here

如果有真实数据,则可以更轻松地实现正则表达式设计。