【发布时间】:2016-07-23 11:42:38
【问题描述】:
我在使用正则表达式匹配一个只有轻微变化的样本中的精确字符串(并且只有那个字符串,不能包含前缀或后缀)时遇到了一些问题。
我已经查看了与之比较的每个“重复项”,但似乎没有一个解决方案适用于我要解决的问题。如果它确实是重复的,我很想看看如何!
要匹配的短语: Metallica - 木偶大师
示例文本:
Metallica - Master Of Puppets (instrumental)
Metallica - Master Of Puppets
- Metallica - Master Of Puppets
我已经尝试了几种不同的方法。
- 有“起点”:^(Metallica - Master Of Puppets)$
- “稍微多一点”:^((?!上帝的羔羊 - 安息).)*$
- “我快绝望了”:/(?
- 还有“我没有想法,为什么不呢”:(?=^\s*Metallica - Master Of 木偶)。{29}
其中没有一个会匹配正确的(第二个选项,粗体)字符串。从昨晚开始,我把大部分空闲时间都花在了这个小字符串上,而不是编写一个我一直在开发的新应用程序(我真的很讨厌放弃),而且,在这一点上,出于想法,示例和耐心。尽管如此,我真的很想深入了解这个看似简单的正则表达式需要完成什么,无论是为了应用程序还是为了我的心理健康(我讨厌正则表达式,但喜欢一个很好的挑战)。
注意:我确实需要在 Regex 中完成此操作(不是 grep,不是 java 等)。很抱歉提出这样一个看似微不足道的问题,但我在编程世界的 15 个月左右只能让我到目前为止。期待解决方案,谢谢!5
【问题讨论】:
-
单词边界?
\bMetallica - Master Of Puppets\b? -
第二个和第三个文本字符串看起来完全一样(更不用说格式了)。您希望根据什么标准只选取第二个字符串?
-
我不认为这个问题是重复的,但那是因为我认为它没有意义(即我会投票支持关闭)。
-
抱歉,格式问题已解决 - 两者之间的区别是第三个之前的“-”。这只是预期变化的一个例子。什么不完全是melpomene?还是我用格式化清理覆盖它?第二个选项是“正确”选项的标准是该示例没有前缀或后缀。 “乐队名称 - 歌曲名称”是格式。除此之外的任何变化都可能导致错误的结果。
-
没有意义的部分是“我确实需要在 Regex 中完成此操作(不是 grep,不是 java 等)”。您实际使用的是什么语言或工具?