在"[ram]"
字符串中匹配"abcd[ram]xyz"
(方括号括号括起来的内容)的正则表达式为"\[(.*?)\]"
。在同一个字符串中匹配"ram"
(方括号内的内容)的正则表达式是什么?
答案 0 :(得分:3)
在
"[ram]"
字符串中匹配"abcd[ram]xyz"
的正则表达式为"\[(.*?)\]"
确实如此,但不情愿的量词 ?
的存在使其成为rather inefficient one。更好的表达方式是
\[([^\]]*)\]
此修改避免了回溯,使其成为更有效的正则表达式。
在同一个字符串中匹配
"ram"
(方括号内的内容)的正则表达式是什么?
这就是表达!您只需从比赛中拉出第1组:
Pattern p = Pattern.compile("\\[([^\\]]*)\\]"); // Note how slashes need double-escaping in Java
Matcher m = p.matcher("abcd[ram]xyz");
if (m.find()) {
System.out.println(m.group(1));
}
答案 1 :(得分:1)
您可以尝试使用前瞻并向后看:
(?<=\[)(.*)(?=\])
答案 2 :(得分:0)
你可以使用相同的正则表达式“[(。*?)]”然后提取子字符串(去掉字符串中的第一个和最后一个字符)。或者只是搜索“ram”。
答案 3 :(得分:0)
使用后视和前瞻:
(?<=\[).*?(?=\])
由于环顾四周不消耗输入,整个匹配是方括号内的内容(不需要组)