提问人:DbSchema 提问时间:11/15/2023 更新时间:11/16/2023 访问量:43
正则表达式字边界 [duplicate]
RegExp Word Boundaries [duplicate]
问:
我想匹配一个被单词边界、行头或行尾或点包围的关键字。
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 怎么了?
答:
1赞
Bohemian
11/15/2023
#1
您的主要问题是使用 ,这是一个退格字符,而不是 ,这是一个(字面)单词边界。"\b"
"\\b"
另一个问题是在字符类中放置单词边界。单词边界不是字符,因此不需要单词边界,因为点在点和单词字符之间创建一个,因此只需:"(\\.\\b)v2\\b"
"[\\.|\b]v2[\b]"
"\\bv2\\b"
是你想要的
评论
(\\.|\b)
[\\.|\b]
是与其中一个字符匹配的字符类,或 。你想要一个交替(注意转义的\之前)。.
|
b
(\\.|\\b)
b