Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 冒号前的正则表达式_Java_Regex - Fatal编程技术网

Java 冒号前的正则表达式

Java 冒号前的正则表达式,java,regex,Java,Regex,我有这个字符串: [Provider].[Provider]=[ProviderArea].&[X12: WALES] 我只想抓住X12部分 我试过: (?<=: )\w+(?=\]$) 但这会在冒号之前包含整个字符串 我哪里出错了?如果您不想在&[和之间找到单词(\\w+):,那么您可以使用机制 (?<=&\\[)\\w+(?=:) (?试试这个: &\[([^:]+): [^]]+\] & # a literal &, f

我有这个字符串:

[Provider].[Provider]=[ProviderArea].&[X12: WALES]
我只想抓住
X12
部分

我试过:

(?<=: )\w+(?=\]$)
但这会在冒号之前包含整个字符串

我哪里出错了?

如果您不想在
&[
之间找到单词(
\\w+
):
,那么您可以使用机制

(?<=&\\[)\\w+(?=:)
(?试试这个:

&\[([^:]+): [^]]+\]

&      # a literal &, followed by
\[     # a literal [, followed by
(      # begin capture
[^:]+  # one or more characters which are not a colon
)      # end capture, followed by
:      # a colon and a space (not shown), followed by
[^]]+  # one or more characters which are not a closing bracket, followed by
\]     # a literal ]
在Java字符串中:

final Pattern p = Pattern.compile("&\\[([^:]+): [^]]+\\]");
final Matcher m = p.matcher(input);

if (m.find())
    // result is in m.group(1)

我将使用以下regexp\.&\[(.):.]并检索组号1

        Pattern pattern = Pattern.compile("\\.&\\[(.*): .*]");

        Matcher matcher = pattern.matcher("[Provider].[Provider]=[ProviderArea].&[X12: WALES]");

        String result = null;

        if(matcher.find())
            result = matcher.group(1);

        if("X12".equals(result))
            System.out.print("Good expression");
        else
        System.out.print("not good");

你展示了你不想要的东西,却忘了展示你想要的东西。是不是
X12
?我只是想找到X12@TomRodd.如果你自己编写了第一个正则表达式,那么就不难找到需要的正则表达式。你只需要稍微修改一下它。即使你的第二个正则表达式也很接近。
        Pattern pattern = Pattern.compile("\\.&\\[(.*): .*]");

        Matcher matcher = pattern.matcher("[Provider].[Provider]=[ProviderArea].&[X12: WALES]");

        String result = null;

        if(matcher.find())
            result = matcher.group(1);

        if("X12".equals(result))
            System.out.print("Good expression");
        else
        System.out.print("not good");