正则表达式 - 匹配精确(并且仅精确)字符串/短语

时间:2016-07-23 11:42:38

标签: regex string match phrase

我在使用正则表达式来匹配一个精确的字符串(并且只有该字符串,不得包含前缀或后缀)时才会遇到一些问题。

我已经查看了与之相比较的每个“重复”,并且没有一个解决方案似乎适用于我正在努力实现的问题。如果它确实是重复的,我很乐意看到它!

要匹配的词组: Metallica - 木偶大师

示例文字:

Metallica - Master Of Puppets (instrumental)

Metallica - Master Of Puppets

- Metallica - Master Of Puppets

我尝试了几种不同的方法。

  • 有“起点”:^(Metallica - 木偶大师)$
  • “稍微复杂一点”:^((?!上帝的羔羊 - 奠定了休息)。)* $
  • “我变得绝望”:/(?< = \ || \ A | \ n)(Metallica - .Master.of.Puppets)(= \ ||Ž|吗?\ n)/ G
  • 和“我的想法,所以为什么不是”:(?= ^ \ s * Metallica - Master Of 木偶)。{29}

其中任何一个都不匹配正确的(第二个选项,粗体)字符串。我已经把我昨晚的空闲时间用在这个小字符串上,而不是编写一个我一直在努力的新应用程序(我真的很讨厌放弃),而且,在这一点上,出于想法,例子和耐心。尽管如此,我真的想深入了解这个看似简单的正则表达式需要完成的事情,无论是应用程序还是我的心理健康(我讨厌正则表达式,但是喜欢挑战)。

注意:我需要在Regex中完成此操作(不是grep,而不是java等)。很抱歉抛出这样一个看似琐碎的问题,但我在编程世界中的15个月只能让我到目前为止。期待解决方案,谢谢!5

1 个答案:

答案 0 :(得分:1)

我相信你的第一种方法是正确的(与@Dmitry Egorov达成协议),尽管你可能错过了多行标志。这样设置就可以在字符串或文件的每一行的开头和结尾设置^$

在PHP / Js中你会想要使用

/^Metallica - Master Of Puppets$/gm

g标志为'global'并查找所有实例,m标志是前面提到的多行标志。

其他语言将具有类似的标志或多行支持选项。