java - 使用 Pattern.LITERAL 是否与 Pattern.quote 相同?

标签 java regex

更准确地说:做

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/

相关文章:

regex - 从匹配条件结束开始匹配的正则表达式

c++ - 括号和新行的 Qt/QRegExp 正则表达式或 "\r"?

python - Key=Val 使用正则表达式匹配

java - 向现有 PDF 添加页脚

使用 EJB 计时器服务的 Java 多线程

java - 遍历 ArrayList <Object<String>>

使用 while 循环的 Java 菜单循环

java - '非法状态异常 : missing behavior definition for preceeding method call' even though behavior is defined

regex - 邮件::RFC822::地址正则表达式

python - 从变量中删除值的最佳方法?创建数组,或使用正则表达式?或者用Xpath?