有没有人可以帮我修复正则表达式来查找两个@符号之间的子串。
示例 - fghgkghfk@hello@ggjgkglgll@hello@ghfufjkfk.
现在我想要检索那两个HELLO子字符串。 提前致谢。 这有助于我在检索数据时进行模式匹配。
答案 0 :(得分:2)
这将匹配@
字符之间的文字:
(?<=@).*?(?=@)
那些是两端的环顾四边(非消费匹配)并且我之间使用了非贪婪的匹配,所以匹配不会一直运行到 next > em> @
包围匹配
如果你想要一个优雅的单行程序来提取所有这些语法,请执行以下操作:
String[] phrases = input.replaceAll("(^.*?@)|(@[^@]*$)", "").split("@.*?@");
这是一些测试代码:
public static void main(String[] args) {
String input = "fghgkghfk@hello@ggjgkglgll@hello@ghfufjkfk";
String[] phrases = input.replaceAll("(^.*?@)|(@[^@]*$)", "").split("@.*?@");
System.out.println(Arrays.toString(phrases));
}
输出:
[hello, hello]
答案 1 :(得分:0)
String text = "fghgkghfk@hello1@ggjgkglgll@hello2@ghfufjkfk";
Pattern ptrn = Pattern.compile("@(\\w+)@");
Matcher mtchr = ptrn.matcher(text);
while(mtchr.find())
{
String match = mtchr.group(1);
System.out.println("Match = <" + match + ">");
}
答案 2 :(得分:0)
@
之间字符串的简单正则表达式:
'@(.*?)@'
说明:
@ # Match starts at literal @
(.*?) # Capture everything inbetween (non-greedy)
@ # Match ends at literal @
在行动here中查看。