Java 正则表达式匹配如果模式位于句子的开头,则句子的结尾被空格包围

Java 正则表达式匹配如果模式位于句子的开头,则句子的结尾被空格包围,java,regex,Java,Regex,我在java中使用下面的正则表达式来尝试查找模式是否位于字符串的开头、结尾或被空格包围,但它不起作用 如果我这样做\\Wmypattern\\W它会发现被空白包围的模式 但是如果我这样做,[^\\W]mypattern[\\W$]它不会。如果模式存在于字符串的开头、结尾或从字符串的开头或结尾开始,则后一个正则表达式是我试图使其匹配的 我做错了什么?你必须把^和$放在[]之外。你现在正在逃避它 通过指定[\\W]mypattern[\\W]表示被非单词字符包围。我想您应该使用[\\s],一个空白字

我在java中使用下面的正则表达式来尝试查找模式是否位于字符串的开头、结尾或被空格包围,但它不起作用

如果我这样做
\\Wmypattern\\W
它会发现被空白包围的模式

但是如果我这样做,
[^\\W]mypattern[\\W$]
它不会。如果模式存在于字符串的开头、结尾或从字符串的开头或结尾开始,则后一个正则表达式是我试图使其匹配的


我做错了什么?

你必须把
^
$
放在
[]
之外。你现在正在逃避它

通过指定
[\\W]mypattern[\\W]
表示被非单词字符包围。我想您应该使用
[\\s]
,一个空白字符。有关更多信息,请参阅

如果要在开头或结尾匹配,必须执行以下操作:

^mypattern: beginning of the string
mypattern$: end of the string

您必须将
^
$
放在
[]
之外。你现在正在逃避它

通过指定
[\\W]mypattern[\\W]
表示被非单词字符包围。我想您应该使用
[\\s]
,一个空白字符。有关更多信息,请参阅

如果要在开头或结尾匹配,必须执行以下操作:

^mypattern: beginning of the string
mypattern$: end of the string
你想用

(^|\\W)mypattern(\\W|$)
这将匹配模式开头的非单词字符或字符串开头,以及模式结尾的非单词字符或字符串结尾

当前模式匹配的单个字符不是非单词字符(
[^\\W]
),后跟模式,后跟非单词字符或文字字符(
[\\W$]

是一个很好的正则表达式语法参考

(^|\\W)mypattern(\\W|$)
这将匹配模式开头的非单词字符或字符串开头,以及模式结尾的非单词字符或字符串结尾

当前模式匹配的单个字符不是非单词字符(
[^\\W]
),后跟模式,后跟非单词字符或文字字符(
[\\W$]


是正则表达式语法的良好参考

实际上,字符集中的
^
具有特殊含义(否定),将其置于外部将使其成为“and”条件,而不是“or”条件实际上,字符集中的
^
具有特殊含义(否定),将其置于外部将使其成为“and”条件而不是“或”条件非常感谢。正是我想要的,非常感谢你。正是我想要的