正则表达式用于模式匹配

时间:2012-11-19 18:34:52

标签: java regex pattern-matching

有没有人可以帮我修复正则表达式来查找两个@符号之间的子串。

示例 - fghgkghfk@hello@ggjgkglgll@hello@ghfufjkfk.

现在我想要检索那两个HELLO子字符串。 提前致谢。 这有助于我在检索数据时进行模式匹配。

3 个答案:

答案 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中查看。