[英]Regular Expression for pattern matching
任何人都可以帮助我修复正则表达式以查找两个@ 符号之间的子字符串。
fghgkghfk@hello@ggjgkglgll@hello@ghfufjkfk.
现在我想要检索这两个 HELLO 子字符串。 提前致谢。 这有助于我在检索数据时进行模式匹配。
这将匹配@
字符之间的文本:
(?<=@).*?(?=@)
这些是两端的环视(非消耗匹配),我在两者之间使用了非贪婪匹配,因此匹配不会一直运行到下一个@
包围匹配的结尾
如果你想要一个优雅的单线提取所有这些 phrax,请执行以下操作:
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]
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 + ">");
}
@
之间字符串的简单正则表达式:
'@(.*?)@'
解释:
@ # Match starts at literal @
(.*?) # Capture everything inbetween (non-greedy)
@ # Match ends at literal @
在这里查看它的实际效果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.