Java字符串/Regex替换

Java字符串/Regex替换,java,regex,string,Java,Regex,String,我对regex很陌生。不确定如何执行以下操作: 用特定值替换“:p_id” 例如,当我只想用一个值替换“:p_id1”时,它也会用我不想要的相同值替换“:p_id10” “:p_id”之前或之后也可能有标点符号,例如“=:p_id 1)” 有什么建议吗?使用\b(单词边界)运算符 请参见>您可以在模式结束时使用负前瞻 例如: Pattern pattern = Pattern.compile(":p_id\\d(?!\\d)"); String example = ":p_id1 :p_id10

我对regex很陌生。不确定如何执行以下操作:

用特定值替换“:p_id”

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

“:p_id”之前或之后也可能有标点符号,例如“=:p_id 1)”

有什么建议吗?

使用
\b
(单词边界)运算符


请参见>

您可以在模式结束时使用负前瞻

例如:

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

以下是我制作的图案:

 ^[=]{0,1}:p_id1\b[=]{0,1}
这与以下字符串匹配:

:p_id1
=:p_id1
:p_id1=
但不匹配(例如):


只需遵循正则表达式教程,它将教你所有的基础知识。提供你实际用于此过程的代码将帮助我们了解你在寻找什么。我还建议您看看。它可能会帮助您了解如何自己修复它(自己修复感觉更好)“:p_id”也可能在它们之前或之后有标点符号,例如=:p_id 1hanks!成功了。我以前确实有“\\b:p\u id1\\b”,但这似乎不起作用。我一定要再去读一些正则表达式教程!
:p_id1
=:p_id1
:p_id1=
:p_id10