正则表达式Java非字母数字字符匹配

正则表达式Java非字母数字字符匹配,java,regex,Java,Regex,我想匹配如下表达式: 500q6h 其中数字可以是任意整数(因此2q500h也是一个合法表达式) 我尝试使用以下正则表达式匹配此模式 (\W |^)\d+q\d+h(\W |$) 使用这种模式,我希望字符串 a500 q 6h不匹配。相反,它是匹配的 类似地,我希望使用类似的字符串 (500 q 6h)待匹配,但未匹配 我不明白我做错了什么。尝试以下方法: (?<!\w)\d+ q \d+h(?!\w) (? 例如:试试这个(注意java在字符串文本中需要双反斜杠) 我使用了“单词边界”

我想匹配如下表达式:

500q6h

其中数字可以是任意整数(因此
2q500h
也是一个合法表达式)

我尝试使用以下正则表达式匹配此模式
(\W |^)\d+q\d+h(\W |$)

使用这种模式,我希望字符串

a500 q 6h
不匹配。相反,它是匹配的

类似地,我希望使用类似的字符串

(500 q 6h)
待匹配,但未匹配

我不明白我做错了什么。

尝试以下方法:

(?<!\w)\d+ q \d+h(?!\w)
(?
例如:

试试这个(注意java在字符串文本中需要双反斜杠)


我使用了“单词边界”正则表达式
\b
来处理“前一个字母”问题。

^[0-9]+q[0-9]+h$应该是问题中直接从代码中复制和粘贴的表达式吗?我这样问是因为
\W\$
几乎肯定是不正确的,而且在第二个
\d
之后也可能缺少
+
。请确保
\W
实际上是大写的。@CorvinMcpherson,这与
不匹配(500 q 6h)
尽管如此。^\(?[0-9]+q[0-9]+h\)?$修改为匹配(500 q 6h)@Elliott:显示相关代码;)
\\b\\d+ q \\d+h