繁体   English   中英

模式匹配的正则表达式

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM