java RegExp单词边界

bq3bfh9z  于 2023-11-15  发布在  Java
关注(0)|答案(1)|浏览(153)

我想匹配一个由单词边界,行的开始或结束,或点包围的关键字。

Pattern.compile("[\\.|\b]v2[\b]").matcher("CREATE VIEW ${nameWithSchemaName} AS select id from testViewCreationOrder.v2").find()

字符串
因为v2是行尾,所以它返回false。

[\\.|\b]v2[\b|$]


它仍然返回false,但如果我使用

[\\.|\b]v2


返回true什么是错误的?

mqkwyuun

mqkwyuun1#

你的 * 主要 * 问题是使用了"\b",这是一个退格符,而不是"\\b",这是一个(文字)单词边界。
另一个问题是把一个单词边界放在一个字符类中,并期望它工作。单词边界不是一个字符,所以"(\\.\\b)v2\\b"而不是"[\\.|\b]v2[\b]",但你不需要 * 单词边界,因为点在点和单词字符之间创建了一个,所以只需:

"\\bv2\\b"

字符串
是你想要的

相关问题