Симферопольский Форум: регулярные выражения, ворд - Симферопольский Форум

Перейти к содержимому

Внимание! Для всех новых пользователей введена премодерация сообщений и тем.
Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

регулярные выражения, ворд

#1 Гость_bred_*

  • Группа: Гости

Отправлено 10 Март 2011 - 15:13

столкнулся с идиотизмом, который не понимаю -
надо:

провести замену "любая цифра, любая буква" на "оно же, разделенное посередине табом"?

делаю -
[0-9][a-z]
на
\1^t\2

результат -
"в поле "заменить на" не принадлежащий диапазону номер группы"
- хотя там как раз 1 и 2 есть.
Не понимаю (
чего ему не нравится?


#2 Гость_bred_*

  • Группа: Гости

Отправлено 10 Март 2011 - 16:01

нашел ошибку, надо ([0-9])([a-z])

Но блин!
28 тыс замен сделало, а в где-то 1 тыс случаев не видаи хоть убейся!
Вырезал часть дока, полстраницы. Прилипшие к номеру фамилии - замену жму - "0 замен".
шозана? (


#3 Пользователь офлайн   SlavaD 

  • Живу здесь
  • PipPipPipPipPip
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
  • Группа: Технический администратор
  • Сообщений: 1 121
  • Регистрация: 16 Сентябрь 10
  • Сказали спасибо раз:
  • Страна:  

Отправлено 10 Март 2011 - 19:40

может так ?
([0-9]@)([А-Я,а-я,A-Z,a-z])

ну или покажи "неудачный" пример


#4 Гость_bred_*

  • Группа: Гости

Отправлено 11 Март 2011 - 16:46

Просмотр сообщенияSlavaD (10 Март 2011 - 19:40) писал:

может так ?
([0-9]@)([А-Я,а-я,A-Z,a-z])

ну или покажи "неудачный" пример

0 13 73000 2000790850Monika Zikienė 1999 03 01
по ^#^$ находит сразу. А по ([0-9])([a-z]) с вайлдкартами - шиш.
добавление @не играет роли. Кириллицы там нет, галка "отличать регистр" не стоит. Хотя заглавными тоже искать пробовал.


#5 Пользователь офлайн   SlavaD 

  • Живу здесь
  • PipPipPipPipPip
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
  • Группа: Технический администратор
  • Сообщений: 1 121
  • Регистрация: 16 Сентябрь 10
  • Сказали спасибо раз:
  • Страна:  

Отправлено 11 Март 2011 - 21:17

проверил у себя пример
0 13 73000 2000790850Monika Zikienė 1999 03 01
([0-9])([a-z]) действительно ничего не находит
([0-9])([a-z,A-Z]) все находит


#6 Гость_bred_*

  • Группа: Гости

Отправлено 11 Март 2011 - 22:16

Просмотр сообщенияSlavaD (11 Март 2011 - 21:17) писал:

([0-9])([a-z,A-Z]) все находит

странно, но у меня не находит всё равно. (


#7 Пользователь офлайн   SlavaD 

  • Живу здесь
  • PipPipPipPipPip
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
  • Группа: Технический администратор
  • Сообщений: 1 121
  • Регистрация: 16 Сентябрь 10
  • Сказали спасибо раз:
  • Страна:  

Отправлено 11 Март 2011 - 23:06

bred, проверь является ли буква "M" латинской буквой "M", на и на всякий случай, что "0" это "0".


#8 Пользователь офлайн   SlavaD 

  • Живу здесь
  • PipPipPipPipPip
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
  • Группа: Технический администратор
  • Сообщений: 1 121
  • Регистрация: 16 Сентябрь 10
  • Сказали спасибо раз:
  • Страна:  

Отправлено 11 Март 2011 - 23:09

Ну и наверно, что между "0" и "M" нет 3-го невидимого символа, может там та же табуляция уже появилась.


#9 Гость_bred_*

  • Группа: Гости

Отправлено 12 Март 2011 - 02:30

Просмотр сообщенияSlavaD (11 Март 2011 - 23:06) писал:

bred, проверь является ли буква "M" латинской буквой "M", на и на всякий случай, что "0" это "0".

это сгенеренные программой данные. сначала номер, потом фамилия. кириллицу софт не генерит, а номера не просто числа. В номере дела буквы не используются.

Цитата

Ну и наверно, что между "0" и "M" нет 3-го невидимого символа, может там та же табуляция уже появилась.
я пробовал проход курсором через однократные нажатия "влево" или "вправо". Никаких признаков наличия 3 символа меж ними не увидел.


#10 Гость_bred_*

  • Группа: Гости

Отправлено 14 Март 2011 - 17:39

новый вопрос.
А как преодолеть ограничение по длине и сложности строки поиска?
Мне надо искать строку из 13 элементов, разделенных табами, и менять порядок их.
А уже к 7 переменным элементам ворд 2003 начинает кричать, что строка поиска слишком сложная.
Как это обойти?

Строка навроде
^0013([0-3]{1})^t([n,0-9]{1;2})^t([0-9]{5})^t([0-9]{6;10})^t([!^0009]{6;40})^t([n,.,0-9]{1;10})^t([0-9]{11})^t([0-9]{4})^t([^0032,0-9]{7})^t([.,0-9]{2;8})^t

и т.д.


#11 Гость_bred_*

  • Группа: Гости

Отправлено 14 Март 2011 - 17:40

смысл - надо сменить некоторые элементы местами. Но только в части строк, не трогая остальные. Потому и такой длинный набор нужен.


#12 Пользователь офлайн   SlavaD 

  • Живу здесь
  • PipPipPipPipPip
  • Вставить ник
  • Цитировать
  • Раскрыть информацию
  • Группа: Технический администратор
  • Сообщений: 1 121
  • Регистрация: 16 Сентябрь 10
  • Сказали спасибо раз:
  • Страна:  

Отправлено 14 Март 2011 - 18:16

Выгнать в текстовый файл, отредактировать при помощи perl, вернуть обратно.


#13 Гость_bred_*

  • Группа: Гости

Отправлено 15 Март 2011 - 01:34

а литовские символы не погадит?
Большинство текстовых редакторов, что когда-то пробовал, гадило.


#14 Гость_bred_*

  • Группа: Гости

Отправлено 15 Март 2011 - 10:30

а можно ли несколько элементов в один обозначить?
напр, что-нить вроде ([0-9]{4}^t[ ,0-9]{7;10}^t[!^0009,^0013,0-9]{6;40}) - за один элемент..
мне не дает..


Поделиться темой:


Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей