Java Regex 用于将带引号的字符串与转义引号匹配
Posted
技术标签:
【中文标题】Java Regex 用于将带引号的字符串与转义引号匹配【英文标题】:Java Regex for matching quoted string with escaped quotes 【发布时间】:2011-01-30 17:10:46 【问题描述】:我知道已经有很多类似我的问题,但我没有找到适用于 Java 的答案。所以我写了一个新问题。
我有如下内容的文本文件:
key1 = "这是一个 \"test\" 文本,使用 '\\' 字符进行转义"; key2 = '它必须与\'单\'引号和“双”引号一起使用';我需要一个与双引号(或单引号)中的值匹配的正则表达式。此正则表达式必须支持转义引号和转义反斜杠。 正则表达式必须与 Java 标准 Pattern/Matcher 类一起使用。
【问题讨论】:
密切相关,可能有用:***.com/questions/263985/… 【参考方案1】:试试这个正则表达式:
'([^\\']+|\\([btnfr"'\\]|[0-3]?[0-7]1,2|u[0-9a-fA-F]4))*'|"([^\\"]+|\\([btnfr"'\\]|[0-3]?[0-7]1,2|u[0-9a-fA-F]4))*"
作为字符串文字:
"'([^\\\\']+|\\\\([btnfr\"'\\\\]|[0-3]?[0-7]1,2|u[0-9a-fA-F]4))*'|\"([^\\\\\"]+|\\\\([btnfr\"'\\\\]|[0-3]?[0-7]1,2|u[0-9a-fA-F]4))*\""
【讨论】:
Crikey,这是一个正则表达式半。你是刚想出来的,还是你已经使用了一段时间的东西? (例如,您认为它的测试效果如何?) @OP:这看起来像是为处理 Java 字符串和类似字符串而量身定制的(例如,它处理像\u1234
这样的 Unicode 转义,以及通常的 Java \f
、\t
等)。只是提到它以防您的源数据与此略有不同,因为您实际上并没有说字符串是 Java 样式的,只是它们可能有反斜杠转义的引号和反斜杠。事实上,在我看来,你的字符串是 javascript(它的语法与 Java 字符串几乎相同,所以你可能没问题)。
是的,字符串是 JavaScript。但我用 Java 解析它们。以上是关于Java Regex 用于将带引号的字符串与转义引号匹配的主要内容,如果未能解决你的问题,请参考以下文章