RegEx:替换。 with - in ID

时间:2012-01-16 12:27:50

标签: regex replace

我不是RegEx专家,我尽力使用http://gskinner.com/RegExr/,但我找不到合适的解决方案。这是我的问题:

我有一堆像

这样的ID的HTML文件
<span id="listing0.title.moreinfo">bla</span>

还有其他ID没有

<span id="listing0">bla</span>

我的问题: 如何将所有替换为 - ?不应更改没有的ID。

我确定这不是最好的解决方案,但这就是我找到所有ID的方式:

/( id=")(([\w\d])*)(.*([\w\d])*)"/gi

3 个答案:

答案 0 :(得分:1)

我用PHP这样做,但过程是一样的。

// pattern to find all the ids
$reg = '/id="([^"]+)"/';
$str = '<span id="listing0.title.moreinfo">bla</span>';
// find all the ids. second first subgroup will contain the id string.
preg_match($reg, $str, $m);

// replace . with - with simple string replace function.
echo str_replace('/\./', '-', $m[0]);

标准id字符串查找正则表达式为/id="([^"]+)"/gi

答案 1 :(得分:0)

这适用于C#:

var html = @"<span id=""listing0.title.moreinfo"">bla</span>
             <span id=""listing0"">bla</span>";

var pattern = @"id=("".*?"")";

html = Regex.Replace(html, pattern, delegate(Match match)
                                    {
                                        return match.Value.Replace('.', '-');
                                    });

Console.WriteLine(html);
Console.ReadKey();

答案 2 :(得分:0)

使用Notepad ++,

  • 搜索:id="(\w+)\.(\w+)\.(\w+)"
  • 替换为:id="\1-\2-\3"