RegEx: заменить. с - в идентификаторах - PullRequest
0 голосов
/ 16 января 2012

Я не эксперт по RegEx, и я старался изо всех сил с http://gskinner.com/RegExr/,, но я не могу найти правильное решение.Вот моя проблема:

У меня есть куча файлов HTML с идентификаторами вроде

<span id="listing0.title.moreinfo">bla</span>

Есть другие идентификаторы без .

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

Мой вопрос: как заменить все . на - ?Идентификаторы без . не должны быть изменены.

Я уверен, что это не лучшее решение, но вот как я нахожу все идентификаторы:

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

Ответы [ 3 ]

1 голос
/ 16 января 2012

Я делаю это на 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="([^"]+)"/gi

0 голосов
/ 16 января 2012

С Блокнотом ++,

  • поиск: id="(\w+)\.(\w+)\.(\w+)"
  • заменить на: id="\1-\2-\3"
0 голосов
/ 16 января 2012

Это работает в 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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...