正则表达式,正则表达式

时间:2016-01-11 00:09:39

标签: regex perl

我有一个以下模式的字符串: " x44A-x440-x427-x45E-Yellow-apple",对于十六进制数字(unicode字符)我想用#字符替换那些破折号并将#也附加到第一个破折号。这些十六进制代码可以是unicode char范围中的任何一个。请帮助正则表达式实现我的目标,最好在perl中。感谢

2 个答案:

答案 0 :(得分:1)

您在寻找

吗?
s/x([0-9a-fA-F]{1,5})/ chr hex $1 /eg

答案 1 :(得分:0)

为了删除两者之间的破折号,可以将ikegami的解决方案修改为此。

s/(?:^|-)x([0-9a-fA-F]{1,5})/ chr hex $1 /eg;

(?:^|-)部分表示' x'在字符串的开头或短划线后面。 ($: ... )是一个非捕获分组。