REGEX - 如何阅读“角色?

时间:2014-02-17 12:31:54

标签: java regex

我正在使用带有regexp的hadoop pig(REGEX_EXTRACT_ALL) - 这是Java解析。 我有一个字符串:

"DYN_USER_ID=32753477; $Path=\"/\"; DYN_USER_CONFIRM=e6d2a0a7b7715cb10d1dca504e3c5e80; $Path=\"/\"" "Nokia6070/2.0 (03.20) Profile/MIDP-2.0 Configuration/CLDC-1.1"

我正在开两个小组:

First: DYN_USER_ID=32753477; $Path=\"/\"; DYN_USER_CONFIRM=e6d2a0a7b7715cb10d1dca504e3c5e80; $Path=\"/\"

Second: Nokia6070/2.0 (03.20) Profile/MIDP-2.0 Configuration/CLDC-1.1

正如你所看到的,在第一个字符串中有“character但有转义字符\。” 简化解决方案是:

"(.*)" "(.*)"

但这是最好的吗?

2 个答案:

答案 0 :(得分:1)

"(.*)(?<!\\\\)" "(.*)"

这使用 negatve lookbehind (?<!☀)其中☀是一些字符串,此处字符退格由正则表达式转义和字符串转义的反斜杠表示。

答案 1 :(得分:1)

理想情况下,您应该使用否定字符类[^"],以便它从第一个分隔符"到最后一个分隔符"匹配,但问题是它忽略了转义{ {1}}字符。如果您可以在字符串中转义"并转义",那么使用此类内容会更好:

\

小组"((?:\\.|[^"\\])+)" "((?:\\.|[^"\\])+)" 将匹配转义字符或多个(?:\\.|[^"\\])+字符。

regex101 demo