正则表达式匹配某些单词前的确切短语

时间:2017-12-05 02:50:01

标签: regex

我希望匹配在双倍空格之前出现的任何四位数字和#34;来自"离。

  • 2356 from
  • 1524 from
  • 1223 from

表达式\d{4} from从"中提取数字,双倍空格和单词"但理想情况下我只想得到那四个数字(没有尾随空格和单词"来自& #34;)并且仅在它们不是带有连字符的数字的一部分的情况下,例如:

  • 2536 from = 2536
  • 8574 from = 8574
  • 35-6655 from =不匹配
  • 3652 =不匹配(没有字的数字"来自"数字后面)

2 个答案:

答案 0 :(得分:2)

您需要在正则表达式中使用(...)运算符分组:

(\d{4})  from

然后从匹配中提取组#1。或使用(?=...)进行零宽度前瞻匹配。

\d{4}(?=  from)

为避免连字符后面的匹配,您可以使用零宽度负面后视。

(?<!-)\d{4}(?=  from)

说明:

(?<!_)_______________负零宽度后视......
如果找到____-________________,则"-" ...不匹配 ______\d{4}__________四位数 ___________(?=______)正零宽度前瞻...
如果找到______________ from_,则" from" ...匹配

答案 1 :(得分:0)

您可以([0-9]{4}) from

更多请参阅here