0

我对正则表达式很陌生。不确定如何执行以下操作:

将 ":p_id" 替换为特定值。

例如,当我只想用一个值替换 ":p_id1" 时,它也用我不想要的相同值替换了 ":p_id10"。

“:p_id”也可以在它们之前或之后有标点符号,例如“=:p_id1)”

有什么建议吗?

4

3 回答 3

1

使用\b(字边界)运算符

myString.replaceAll(":p_id1\\b","some replacement");

请参阅Pattern>边界匹配器

于 2013-05-14T08:23:33.697 回答
0

您可以在 Pattern 的末尾使用负前瞻。

例如:

Pattern pattern = Pattern.compile(":p_id\\d(?!\\d)");
String example = ":p_id1 :p_id10";
Matcher matcher = pattern.matcher(example);
while (matcher.find()) System.out.println(matcher.group());

输出:

:p_id1
于 2013-05-14T08:30:07.803 回答
0

这是我制作的图案:

 ^[=]{0,1}:p_id1\b[=]{0,1}

这匹配字符串,如:

:p_id1
=:p_id1
:p_id1=

但不匹配(例如):

:p_id10
于 2013-05-14T08:33:59.240 回答