我有以下标记:
<overlay id="B66" x="600">
我想更改x值,但保留其他所有内容,但我有其他x值等于600,所以我不能只在x上找到并替换。
我使用了以下找到所有标签的内容:
\<overlay id=\"[A-Z]{1}[0-9]{2}\" x=\"600\"
但是,我希望在更改x值时保持id(“B66”)不变。
我应该把什么作为替换值?
答案 0 :(得分:1)
如果您将正则表达式定义为:
"(<overlay id=\"[A-Z]{1}[0-9]{2}\" x=\")(600)(\")"
要将其拆分为三个捕获组,其中x
的值在第二个中,以下替换字符串应该执行您想要的操作:
"$1New Value$3"
哪会产生:
<overlay id="B66" x="New Value"
修改:
这至少适用于使用的语言是.NET和Regex.Replace方法。
答案 1 :(得分:0)
答案取决于您愿意在其中实施的语言。
例如,在sed
的shell中:
$ echo '<overlay id="B66" x="600">' | sed -re 's/<overlay id="([A-Z]{1}[0-9]{2})" x=\"600\"/<overlay id="\1" x="666"/'
<overlay id="B66" x="666">
无论如何,请阅读您使用的语言替换功能的文档。
答案 2 :(得分:0)
如果您具有外观断言的灵活性..
搜索:
'%(<overlay(?=\s)[^>]*(?<=\s)x\s*=\s*(["\']))\s*600\s*(\2[^>]*/?>)%'
取代:
"${1}9000${3}"
expanded:
'%
(<overlay (?=\s)[^>]* (?<=\s)x\s*=\s*(["']))
\s*600\s*
(\2[^>]*/?>)
%x'