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");