当前位置: 首页 > 知识库问答 >
问题:

正则表达式与符号不匹配

钦高峯
2023-03-14

我正在尝试匹配以下正则表达式:

\b(?:mr|mrs|ms|miss|messrs|mmes|dr|prof|rev|sr|jr|&|and)\.?\b

换句话说,一个单词边界后跟上面的任何字符串(可选地跟一个句点字符),后面跟一个单词边界。

Pattern p = Pattern.compile(
        "\\b(?:mr|mrs|ms|miss|messrs|mmes|dr|prof|rev|sr|jr|&|and)\\.?\\b", 
        Pattern.CASE_INSENSITIVE);
    
String result = p.matcher("mr one and mrs.two and three & four").replaceAll(" ");
    
System.out.println("["+result+"]");

我也在regex101上尝试过这一操作,但与数仍然不匹配:https://regex101.com/r/klkmwl/1

转义符并没有什么区别,我已经尝试使用十六进制转义序列\x26来代替和符(如本问题所建议的)。为什么这不匹配?

共有1个答案

丌官皓君
2023-03-14

您的正则表达式将匹配一个与数,如果它位于单词字符之间,例如three&four,请参阅此正则表达式演示。发生这种情况是因为非单词字符前的\b要求单词字符立即出现在其前面。此外,由于可选点后面有\b,因此只有在左侧有一个字符的情况下,点和符号才会匹配。

您需要重写模式,以便将单词边界应用于单词而不是符号:

java prettyprint-override">Pattern p = Pattern.compile(
        "(?:\\b(?:mr|mrs|ms|miss|messrs|mmes|dr|prof|rev|sr|jr|and)\\b|&)\\.?", 
        Pattern.CASE_INSENSITIVE);

请在线查看正则表达式演示。

 类似资料:
  • 有没有人试图描述与正则表达式匹配的正则表达式? 由于重复的关键字,这个主题几乎不可能在网上找到。 它可能在实际应用程序中不可用,因为支持正则表达式的语言通常具有解析它们的方法,我们可以将其用于验证,以及一种在代码中分隔正则表达式的方法,可用于搜索目的。 但是我仍然想知道匹配所有正则表达式的正则表达式是什么样子的。应该可以写一个。

  • 我使用wiremock来模拟某些请求及其相应的响应,但我试图添加一个正则表达式。不幸的是,这只会引发一个异常,表明请求不匹配。 我也试过了 我发送的请求是

  • 我有一根线,比如: 如何匹配每行的最后一个?顺便说一句,这是我试图在Sublime的文本中做到的。这些值不一致,就像我在这里看到的,我有几百行要替换。 我尝试了,但这与相匹配。

  • 我正试图做到这一点: 我得到一个错误: 我已经测试了正则表达式,它是有效的。我还进行了调试,发现regexpatern也匹配。但出于某种原因,我仍然会犯这个错误。我认为我用错了。 我尝试了一个更简单的版本,但也没有成功: 有什么想法吗?提前感谢。

  • 问题内容: 我在用Python将字符串中的数字匹配时遇到麻烦。尽管应该明确匹配,但甚至不匹配 或仅匹配。我的监督在哪里? 问题答案: 阅读文档:http : //docs.python.org/2/library/re.html#re.match 如果在零个或多个字符 开头 的 字符串 您要使用(或)

  • 出于某种原因,上面的正则表达式没有捕捉带撇号的名称。 例如:D'STALL先生不匹配。任何关于regex模式的帮助都将不胜感激。 代码所做的是获取输入并用XML标记它。诸如以下内容: 正则表达式与上述段落不匹配。