用于匹配 Java 中的字符串文字的正则表达式?
Regex for matching a string literal in Java?
我有一组正则表达式字符串。其中之一必须匹配在给定 java 文件中找到的任何字符串。
这是我目前拥有的正则表达式字符串:"(\").*[^\"].*(\")"
然而,字符串 "Hello\"good day"
被拒绝,即使字符串中的引号被转义。我认为当它在内部找到引号时,无论是否转义,我都会立即拒绝字符串文字。我需要它接受带有转义引号的字符串文字,但它应该拒绝 "Hello"Good day"
.
Pattern regex = Pattern.compile("(\").*[^\"].*(\")", Pattern.DOTALL);
Matcher matcher = regex.matcher("Hello\"good day");
matcher.find(0); //false
在 Java 中,您可以使用此正则表达式匹配 "
和 "
之间的所有转义引号:
boolean valid = input.matches("\"[^\"\\]*(\\.[^\"\\]*)*\"");
正在使用的正则表达式是:
^"[^"\]*(\.[^"\]*)*"$
分手:
^ # line start
" # match literal "
[^"\]* # match 0 or more of any char that is not " and \
( # start a group
\ # match a backslash \
. # match any character after \
[^"\]* # match 0 or more of any char that is not " and \
)* # group end, and * makes it possible to match 0 or more occurrances
" # match literal "
$ # line end
我有一组正则表达式字符串。其中之一必须匹配在给定 java 文件中找到的任何字符串。
这是我目前拥有的正则表达式字符串:"(\").*[^\"].*(\")"
然而,字符串 "Hello\"good day"
被拒绝,即使字符串中的引号被转义。我认为当它在内部找到引号时,无论是否转义,我都会立即拒绝字符串文字。我需要它接受带有转义引号的字符串文字,但它应该拒绝 "Hello"Good day"
.
Pattern regex = Pattern.compile("(\").*[^\"].*(\")", Pattern.DOTALL);
Matcher matcher = regex.matcher("Hello\"good day");
matcher.find(0); //false
在 Java 中,您可以使用此正则表达式匹配 "
和 "
之间的所有转义引号:
boolean valid = input.matches("\"[^\"\\]*(\\.[^\"\\]*)*\"");
正在使用的正则表达式是:
^"[^"\]*(\.[^"\]*)*"$
分手:
^ # line start
" # match literal "
[^"\]* # match 0 or more of any char that is not " and \
( # start a group
\ # match a backslash \
. # match any character after \
[^"\]* # match 0 or more of any char that is not " and \
)* # group end, and * makes it possible to match 0 or more occurrances
" # match literal "
$ # line end