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

Regex 正则表达式-精确匹配(且仅精确匹配)字符串/短语,regex,string,match,phrase,Regex,String,Match,Phrase,我在使用正则表达式匹配样本中的精确字符串(并且只有该字符串,不能包含前缀或后缀)时遇到了一些问题,只有轻微的变化 我已经检查了每一个与之相比的“复制品”,似乎没有一个解决方案适用于我试图完成的问题。如果它确实是一个复制品,我很想看看它是如何复制的 要匹配的短语: Metallica-木偶大师 示例文本: 我尝试了几种不同的方法 有一个“起点”:^(Metallica-木偶大师)$ “稍微有点牵连”:^((?!上帝的羔羊-安息)。)*$ “我绝望了”:/(?我相信您的第一种方法是正确的(与@Dm

我在使用正则表达式匹配样本中的精确字符串(并且只有该字符串,不能包含前缀或后缀)时遇到了一些问题,只有轻微的变化

我已经检查了每一个与之相比的“复制品”,似乎没有一个解决方案适用于我试图完成的问题。如果它确实是一个复制品,我很想看看它是如何复制的

要匹配的短语: Metallica-木偶大师

示例文本:

我尝试了几种不同的方法

  • 有一个“起点”:^(Metallica-木偶大师)$
  • “稍微有点牵连”:^((?!上帝的羔羊-安息)。)*$

  • “我绝望了”:/(?我相信您的第一种方法是正确的(与@Dmitry Egorov一致),尽管您可能缺少多行标志。这将设置它,以便在字符串或文件的每一行的开头和结尾设置
    ^
    $

    在PHP/Js中,您需要使用

    /^Metallica - Master Of Puppets$/gm
    
    g
    标志是“全局”并查找所有实例,
    m
    标志是前面提到的多行标志


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

    我相信您的第一种方法是正确的(与@Dmitry Egorov一致),尽管您可能缺少多行标志。这将设置多行标志,以便在字符串或文件的每行的开头和结尾设置
    ^
    $

    在PHP/Js中,您需要使用

    /^Metallica - Master Of Puppets$/gm
    
    g
    标志是“全局”并查找所有实例,
    m
    标志是前面提到的多行标志


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

    单词边界?
    \b金属-木偶大师\b
    ?第二个和第三个文本字符串看起来完全相同(更不用说格式了)。基于什么标准,您只想选择第二个字符串?我不认为这个问题是重复的,但这是因为我认为它没有意义(即,我投票赞成以不清楚的方式结束)。对不起,格式问题已经解决-两者之间的区别是“-”在第三个选项之前。这只是一个预期变化的示例。melpomene到底有什么意义?或者我是否用格式清理覆盖了它?第二个选项的标准是“正确”选项是示例中没有前缀或后缀。“乐队名称-歌曲名称”是格式。除此之外的任何变化都可能导致不正确的结果。毫无意义的部分是“我确实需要在正则表达式(不是grep,不是java等)中执行此操作”。您实际使用的语言或工具是什么?单词边界?
    \bMetallica-木偶大师\b
    ?第二个和第三个文本字符串看起来完全相同(更不用说格式了)。基于什么标准,您只想选择第二个字符串?我不认为这个问题是重复的,但这是因为我认为它没有意义(即,我投票赞成以不清楚的形式结束)。对不起,格式问题已经解决了-两者之间的区别是“-”在第三个选项之前。这只是一个预期变化的示例。melpomene到底有什么意义?或者我是否用格式清理覆盖了它?第二个选项的标准是“正确”选项是示例中没有前缀或后缀。“乐队名称-歌曲名称”是格式。除此之外的任何变化都可能导致不正确的结果。毫无意义的部分是“我确实需要用正则表达式(不是grep,不是java等)完成此操作”。您实际使用的是什么语言或工具?