【发布时间】:2016-08-30 04:19:30
【问题描述】:
我有一个正则表达式字符串数组。其中之一必须匹配在给定 java 文件中找到的任何字符串。
这是我目前拥有的正则表达式字符串:"(\").*[^\"].*(\")"
但是,即使字符串中的引号被转义,字符串"Hello\"good day" 也会被拒绝。我认为当我在内部找到引号时,我会立即拒绝字符串文字,无论它是否被转义。我需要它接受带有转义引号的字符串文字,但它应该拒绝"Hello"Good day"。
Pattern regex = Pattern.compile("(\").*[^\"].*(\")", Pattern.DOTALL);
Matcher matcher = regex.matcher("Hello\"good day");
matcher.find(0); //false
【问题讨论】:
-
您可能想对
"字符进行否定的后视。但是你将很难与 cmets 打交道。 -
另外你说'"Hello\"good day"被拒绝'然后你说'但它应该拒绝"Hello"Good day"'。这意味着它正在工作。
-
我需要它接受带有转义引号的字符串文字,但它应该拒绝
"Hello"Good day"- 你必须指的是像String pat = "\"[^\\\\\"]*(?:\\\\.[^\"\\\\]*)*\""这样的正则表达式,并将它与String#matches()一起使用。编辑:查看 anubhava 刚刚发布的内容。 -
您需要担心其他转义序列吗?
\n,\t,\u1234?
标签: java regex regex-greedy