【发布时间】:2015-09-23 10:10:21
【问题描述】:
我在我的代码中添加了这个正则表达式
\s\$\w+\.*\w+%*\s
我认为它会在我的输入字符串中匹配并标记以下场景:
- $var1 $var2
- $var1
$var2
我观察到案例 2 将我的输入拆分为 2 个匹配项 var1、var2。但是如果 1 $var1 被认为是匹配并且 $var2 被忽略。万一它不属于我的RE,因为“任何以空格开头的单词都以空格结尾”并将我的输入拆分为2个匹配项?如果不能,请解释纠正方法并告诉我上述 RE 失败的原因。
代码如下:
List<String> values = new ArrayList<String>();
str = " " + str;
String pattern = (StringConstants.PATTERN_DOLLER_VALUE);
Pattern patternComplie = Pattern.compile(pattern);
if (!StringUtils.isBlank(configTemplateString)) {
Matcher matcherConfigTemplateString = patternComplie
.matcher(configTemplateString);
while (matcherConfigTemplateString.find()) {
String placeHolder = matcherConfigTemplateString.group();
System.out.println("placeholder :" + placeHolder);
values.add(matcherConfigTemplateString.group().trim());
“PATTERN_DOLLER_VALUE”具有我上面提到的模式。 Values 是一个包含令牌的数组列表。
【问题讨论】:
-
@NielsKeurentjes- 我该怎么做?
-
@NielsKeurentjes 如果您阅读了这个问题,您会发现实际上第二个问题适用于 OP。
-
如果你只想匹配所有的$vars,你可以简单地使用\$\w+/g
-
糟糕,我的立场已得到纠正。这个问题的措辞非常神秘,带有编号的案例和变量:P
-
@Sergio 我也厌倦了,它不起作用。也试过这个-(\s\$\w+\s)*
标签: regex