正则表达式用中间的数字替换字符串

时间:2013-05-03 23:16:09

标签: regex

我想用格式

替换字符串
XXXXXXXXXXstart_N_endYYYYYYYYYY

(其中N是一个整数[可以有多个数字],并且start,end是已知的固定字符串)删除start_N_end

所以结果应该是

XXXXXXXXXXYYYYYYYYYY

一个真实示例:我需要将Input_0_key替换为MyKey

<input id="Input_0_key" name="Input_0_key" size="30" type="text">

注意:我需要使用regexp进行替换,不能使用DOM解析器或类似的。

提前致谢

4 个答案:

答案 0 :(得分:1)

s/Input.*?key/MyKey

.*?将在Inputkey之间尽可能少地匹配。

答案 1 :(得分:1)

如果你使用的是java,我怀疑你是来自你的历史:

str.replaceAll("(\"[^\"]*?)Input_\\d*_key([^\"]*\")","$1$2");

"hiInput_12312312_keyhello"并返回"hihello"

答案 2 :(得分:1)

在php中试试这个:

$string = '<input id="Input_0_key" name="Input_0_key" size="30" type="text">';
$pattern = '~<input id="\K[^"]++(?=" name="Input_0_key" size="30" type="text">)~';
echo preg_replace($pattern, 'Youhou', $subject);

答案 3 :(得分:1)

就像s/Input_\d+_key/MyKey/g一样简单。