Java 单词“前无字母”;“瓦里安”;正则表达式

Java 单词“前无字母”;“瓦里安”;正则表达式,java,regex,Java,Regex,我想定义正则表达式来检测文本中的单词wariant。问题是我不希望在wordwariant之前或之后有字母 我已经做到了: Pattern wariantPattern = Pattern.compile("[\\w]{0}wariant[\\w]{0}"); 但不幸的是,word:subwariant也与之匹配。您可以使用word boundary\b: Pattern wariantPattern = Pattern.compile("\\bwariant\\b"); Pattern w

我想定义正则表达式来检测文本中的单词
wariant
。问题是我不希望在word
wariant
之前或之后有字母

我已经做到了:

Pattern wariantPattern = Pattern.compile("[\\w]{0}wariant[\\w]{0}");

但不幸的是,word:
subwariant
也与之匹配。

您可以使用word boundary
\b

Pattern wariantPattern = Pattern.compile("\\bwariant\\b");
Pattern wariantPattern = Pattern.compile("\\bwariant\\b");

您可以使用单词边界
\b

Pattern wariantPattern = Pattern.compile("\\bwariant\\b");
Pattern wariantPattern = Pattern.compile("\\bwariant\\b");

您可以使用单词anchor
\b

Pattern wariantPattern = Pattern.compile("\\bwariant\\b");
Pattern wariantPattern = Pattern.compile("\\bwariant\\b");
与所有锚定一样,它将匹配输入文本中的一个位置(即,它不会使用文本),其中一个为真:

  • 前一个字符不是单词字符,下一个字符是;或
  • 前一个字符是单词字符,下一个字符不是单词字符;或
  • 这是输入文本的开头,第一个字符是单词字符;或
  • 这是输入文本的结尾,最后一个字符是单词字符

  • 一些正则表达式引擎甚至有更专门的锚(
    \
    用于条件2和4),但没有Java。

    您可以使用单词anchor
    \b

    Pattern wariantPattern = Pattern.compile("\\bwariant\\b");
    
    Pattern wariantPattern = Pattern.compile("\\bwariant\\b");
    
    与所有锚定一样,它将匹配输入文本中的一个位置(即,它不会使用文本),其中一个为真:

  • 前一个字符不是单词字符,下一个字符是;或
  • 前一个字符是单词字符,下一个字符不是单词字符;或
  • 这是输入文本的开头,第一个字符是单词字符;或
  • 这是输入文本的结尾,最后一个字符是单词字符

  • 一些正则表达式引擎甚至有更专门的锚(
    \
    用于条件2和4),但没有Java。

    使用锚这个词(
    \b
    )--当然,在Java中要加倍反斜杠string@fge回答这个问题,我会投赞成票。用anchor这个词(
    \b
    )--当然,在Java中将反斜杠加倍string@fge回答这个问题,我会投赞成票。