繁体   English   中英

提取两个不一定连续的单词后的所有文本

[英]Extract all text after two not necessarily consecutive words

我有一个像

deleted - the status was being deleted and got it back with it.

我想使用正则表达式。 这里的固定元素是单词statusdeleted 它们之间可以是不同的文本,我需要忽略它。

现在我的正则表达式是(?<=status).*

这需要“状态”之后的所有内容,但我需要忽略从“状态”到“已删除”的所有内容并保留其余部分。

例如输入:

deleted - the status was being deleted and got it back with it.

期望的输出:

and got it back with it.

您可以使用

status.*?deleted\s+(.*)

请参阅此正则表达式演示 您需要访问 Group 1 值才能获得必要的结果。

或者,如果您的环境中有无限宽度的后视模式支持,请使用

(?<=status.*?deleted\s+).*

请参阅此正则表达式演示

注意:如果deleted后的空格是可选的,请使用\\s*而不是\\s+

细节

  • (?<= - 匹配字符串中紧跟其模式之前的位置的正向后视的开始:
  • status.*?deleted - status ,然后是除换行符以外的零个或多个字符,然后尽可能少地deleted
  • \\s+ - 一个或多个空白字符
  • ) - 回顾结束
  • .* - 除换行符以外的零个或多个字符,尽可能多

我想你正在寻找这样的东西:

/(?P<status>[a-z]+) -.+(?P=status) (.*)/

请参阅: https : //regex101.com/r/pKnaAc/1

您可以使用正向后视,就像您现在所做的那样,但您需要添加所有要求(附加文本和分隔符deleted ):

(?<=status.*deleted).*

应该给你你想要的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM