谁能帮我修复正则表达式以查找两个 @ 符号之间的子字符串。
例子-fghgkghfk@hello@ggjgkglgll@hello@ghfufjkfk.
现在我想要检索这两个 HELLO 子字符串。提前致谢。这有助于我在检索数据时进行模式匹配。
谁能帮我修复正则表达式以查找两个 @ 符号之间的子字符串。
例子-fghgkghfk@hello@ggjgkglgll@hello@ghfufjkfk.
现在我想要检索这两个 HELLO 子字符串。提前致谢。这有助于我在检索数据时进行模式匹配。
这将匹配字符之间的文本@
:
(?<=@).*?(?=@)
这些是两端的环视(非消耗匹配),并且我在两者之间使用了非贪婪匹配,因此匹配不会一直运行到下一个 @
包围匹配的末尾
如果您想要一个提取所有此类短语的优雅单行,请执行以下操作:
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 @
在这里查看它的实际应用。