提问人:Abdurrafay i190610 提问时间:9/17/2023 最后编辑:Abdurrafay i190610 更新时间:9/17/2023 访问量:47
JAVA 正则表达式标识字符串 \“string”\ 或字符串内的字符 \'char'\
JAVA Regex identifying strings \"string"\ or characters \'char'\ inside a string
问:
所以,我面临以下问题:
我得到的字符串是“string”或“char”的形式。简而言之,他们带着自己的“”和“”来了。当我的代码中的 String 变量本身存储它们时,它们看起来像这样:“\”string\“” 和 “\'char\'”。
(我还得到了很多不同格式的值,例如十六进制、八进制和整数。我正在使用 java 正则表达式来识别它们,并且我成功地做到了。唯一的问题是字符串和字符值。
我想使用 java 正则表达式来区分它们并获取没有所有“”和“”的 char 和字符串的值。
以下是我用来识别字符的模式,但它似乎不起作用。
模式 charPattern = Pattern.compile(“\s*[\'][\S\s][\']\s*”);
模式 charPattern2 = Pattern.compile(“\s*['][\S\s][']\s*”);
我所期望的是,该模式将能够识别这种性质的字符“char”\。之后,我可以将 \' 替换为空白来获取主值。
有人可以帮忙吗?
答:
1赞
Reilas
9/17/2023
#1
...当我的代码中的 String 变量本身存储它们时,它们看起来像这样:“\”string\“” 和 “\'char\'”。...
...我想使用 java 正则表达式来区分它们并获取没有所有“”和“”的 char 和字符串的值。...
您可以利用环顾语法来断言这些值。
这将产生重叠的值。
例如,在文本中,将捕获 。"abc" + x + "123"
" + x + "
((?<=\").+?(?=\")|(?<=').+?(?='))
下面是使用 Pattern and Matcher 类的示例。
String s = "123 \"abc\" 456 def '7'89";
Pattern p = Pattern.compile("((?<=\").+?(?=\")|(?<=').+?(?='))");
Matcher m = p.matcher(s);
while (m.find()) System.out.println(m.group(1));
输出
abc
7
或者,捕获引号,消除重叠值,并以编程方式删除基准。
(\".+?\"|'.+?')
String s = "123 \"abc\" 456 def '7'89", g;
Pattern p = Pattern.compile("(\".+?\"|'.+?')");
Matcher m = p.matcher(s);
while (m.find()) {
g = m.group(1);
System.out.println(g.substring(1, g.length() - 1));
}
评论
\"
"\\"
"\"string\""
"string"
[\S\s]
.
'\\'
"\\"
"\\s"