gpt4 book ai didi

java - 带反斜杠转义的字符串的正则表达式

转载 作者:行者123 更新时间:2023-11-29 06:51:51 24 4
gpt4 key购买 nike

我试图想出一种模式来查找 Java 源代码中双引号或单引号之间的每个文本。这是我的:

"(.*?)"|’(.*?)’

Debuggex Demo

这几乎适用于我猜的所有情况,除了一个:

"text\"moretext\"evenmore"

Debuggex Demo

这可以用作有效的字符串定义,因为引号被转义了。该模式无法识别更多文本的内部部分。

对解释这种情况的模式有什么想法吗?

最佳答案

您可以使用此正则表达式匹配单引号或双引号字符串,忽略所有转义引号:

(["'])([^\\]*?(?:\\.[^\\]*?)*)\1

RegEx Demo

正则表达式分解:

  • (["']):匹配单引号或双引号并将其捕获到组#1
  • (: 开始捕获第 2 组
    • [^\\]*?:匹配 0 个或多个不是 \
    • 的字符
    • (?:`: 启动非捕获组
      • \\:匹配一个\
      • .:后跟任何被转义的字符
      • [^\\]*?:后跟 0 个或多个非 \ 字符
    • )*:结束非捕获组。匹配 0 个或多个这个非捕获组
  • ):结束捕获组 #2
  • \1:匹配组 #1 中结束的单引号或双引号匹配

关于java - 带反斜杠转义的字符串的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45521098/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com