Автор Тема: Регулярные выражения  (Прочитано 15985 раз)

bellezza

  • Newbie
  • *
  • Сообщений: 4
    • Просмотр профиля
Re: Регулярные выражения
« Ответ #30 : Март 12, 2014, 09:14:48 pm »
Доброго времени суток! Можно ли с помощью данной программы решить следующую задачу.
Есть xml файл, например такой:
 <item id="1" name="3">
    <title reg = "a">text1</title>
  </item>
 <item id="2" name="3">
    <title reg = "t">text2</title>
  </item>
Нужно заменить значение в name на 0, но при условии, что reg="a",т.е на выходе должно получиться вот что:
 <item id="1" name="0">
    <title reg = "a">text1</title>
  </item>
 <item id="2" name="3">
    <title reg = "t">text2</title>
  </item>
Заранее спасибо!

Arex

  • Jr. Member
  • **
  • Сообщений: 58
    • Просмотр профиля
Re: Регулярные выражения
« Ответ #31 : Март 13, 2014, 07:58:52 am »
Например, вот так:
(<item id="\d+" name=)"\d+(">\s*<title reg = "a">) заменить на $1"0$2

bellezza

  • Newbie
  • *
  • Сообщений: 4
    • Просмотр профиля
Re: Регулярные выражения
« Ответ #32 : Март 13, 2014, 09:38:17 pm »
Спасибо за помощь!

bellezza

  • Newbie
  • *
  • Сообщений: 4
    • Просмотр профиля
Re: Регулярные выражения
« Ответ #33 : Март 26, 2014, 10:43:55 am »
Добрый день!Помогите еще вот с такой задачкой.
Есть XML файл:
<item id="1" name = "3">
  <title reg = "a">text</title>
  <doc status = "2"/>
</item>
<item id="1" name = "3">
  <title reg = "a">text</title>
  <doc status = "7"/>
</item>

Нужно заменить значение в name  на 0, при условии, что status = "7", при этом вместо text могут быть любые символы.
Вот это не работает: (<item id="\d" name =)"\d+(">\s*<title reg = "\S">.+</title>\s*<doc status = "7"/>)

Arex

  • Jr. Member
  • **
  • Сообщений: 58
    • Просмотр профиля
Re: Регулярные выражения
« Ответ #34 : Март 27, 2014, 12:55:49 pm »
Не работает, потому что в первой скобке в конце нет пробела. А так да, подход верный.
Я доработал свою прошлую регулярку и добавил обработку отсутствия/наличиея пробелов вокруг знака равенства:
(<item id\s?=\s?"\d+" name\s?=\s?)"\d+(">\s*<title[^<>]*?>[^<>]*?<\/title>\s*<doc status\s?=\s?"7"\/>) заменить на $1"0$2

bellezza

  • Newbie
  • *
  • Сообщений: 4
    • Просмотр профиля
Re: Регулярные выражения
« Ответ #35 : Март 27, 2014, 02:24:36 pm »
Спасибо, выручили! Дай Вам Бог здоровья!