【问题标题】:Regex (.NET) to find a pattern between two other patterns正则表达式 (.NET) 在其他两个模式之间查找模式
【发布时间】:2020-05-07 20:09:13
【问题描述】:

我有一个看起来像这样的字符串:

DOG[i want to look for specific hits of stuff here]

我想匹配出现在开头DOG[ 和结尾] 之间的任何单词“look”或“stuff”

我知道我可以写一个像 (?<=DOG\[).*?(?=\]) 这样的正则来查找开头和结尾位之间的所有文本,但我只想在这些开头和结尾之间查找特定的单词。

我该怎么做?

【问题讨论】:

  • 是.NET,使用(?<=DOG\[[^][]*?)(?:look|stuff)(?=[^][]*])
  • 你不知道你刚刚帮助了我多少。你介意写一个完整的答案,在那里你可以更详细地解释你的代码吗?我想多了解一点。
  • 对此也有替代方案和解决方法,但我无法向您展示任何内容,因为您尚未解释您打算如何处理比赛。

标签: c# .net regex


【解决方案1】:

由于在 .NET 正则表达式中,您可以在后视中使用匹配未知长度字符串的模式,因此您可以使用

(?<=DOG\[[^][]*?)(?:look|stuff)(?=[^][]*])

请参阅regex demo

这里,

  • (?&lt;=DOG\[[^][]*?) - 正向后视,匹配紧接在 DOG[ 之前的位置以及除 [] 之外的任何 0+ 字符
  • (?:look|stuff) - lookstuff
  • (?=[^][]*]) - 正向前瞻匹配紧随其后的任何 0+ 字符的位置,而不是 [],然后是 ]

【讨论】:

    猜你喜欢
    • 2018-06-28
    • 2016-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多