如何用自身或更多替换匹配的所有实例?鲁比(人名)



好的,假设我在HTML文件中有一堆input:

<input class="form-control" type="text" id="ogwb">
<input class="form-control" type="text" id="aosgh">
<input class="form-control" type="text" id="aghw">

我如何用自己和具有相同id值的namevalue属性替换id s的所有实例,如:

<input class="form-control" type="text" id="ogwb" name="ogwb" value="<?php echo htmlspecialchars($_POST['ogwb']); ?>">
<input class="form-control" type="text" id="aosgh" name="aosgh" value="<?php echo htmlspecialchars($_POST['aosgh']); ?>">
<input class="form-control" type="text" id="aghw" name="aghw" value="<?php echo htmlspecialchars($_POST['aghw']); ?>">

这是我尝试过的:

f = File.read('my.html')
$arr = f.scan(/id="([^"]*)"/)
$arr.each{ |a|
    e_ = a.join(", ")+'"'
    e__ = a.join(", ")+'"'+' name="'+a.join(", ")+'" value="<?php echo htmlspecialchars($_POST['+"'"+a.join(", ")+"'"+']); ?>"'
    f.gsub(/#{e_}/,e__)
}

如果我做puts e_puts e__,我得到匹配和替换我想要的,但gsub似乎不起作用。

您将需要使用正则表达式抓取这个:

<input class="form-control" type="text" id="([^"]+)">

注意,我用一个捕获组(括号)包围了id的文本值。这是捕获组#1

您可以使用1访问第一个捕获的组。

所以你需要中搜索之前的正则表达式,然后用以下内容替换:

<input class="form-control" type="text" id="1" name="1" value="<?php echo htmlspecialchars($_POST['1']); ?>">

示范:https://regex101.com/r/qeHkmg/1

文档:http://www.regular-expressions.info/replacebackref.html

最新更新