更准确地说:做
Pattern.compile(s, x | Pattern.LITERAL)
和
Pattern.compile(Pattern.quote(s), x)
为任何字符串 s
和任何其他标志 x
创建等效的正则表达式?
如果不是,如何模拟Pattern.LITERAL?
最佳答案
简短回答:对于您的示例,是的。
长答案:是的,但 Pattern.quote 更灵活。如果您只想引用一些 模式怎么办?喜欢:
Pattern.compile(Pattern.quote(s) + "+", x)
通过设置 Pattern.LITERAL 标志,即使是 +
字符现在也将按字面意思处理。
如果您不信任文档,也许可以查看 the source code在 Google 代码搜索中搜索 Pattern.compile
会有所帮助。
通过查看源代码我可以得出以下结论:
如果 LITERAL 标志未设置,无论所有其他标志如何,它都会查找任何\Q...\E 引用 block 并手动转义特殊字符,就像人们会期望。
如果设置了 LITERAL 标志,它将使用 newSlice 转换整个模式方法,并且至少有
CASE_INSENSITIVE
标志和UNICODE_CASE
标志 的特殊情况
关于java - 使用 Pattern.LITERAL 是否与 Pattern.quote 相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4839894/