Поиск по шаблону: я ищу начало любого числа, за которым следуют пробел и некоторые тексты, и останавливается до того, как встретится следующий номер, которому предшествует пробел.
группировка должна выглядеть так:
группа 1: число
группа 2: пробел после числа
группа 3: некоторый текст, который также может содержать некоторые цифры, но эти цифры не находятся между пробелами, а между (µµ).
Не могли бы вы сказать нам, на словах, что ваша модель должна достичь?
harrymc 5 лет назад
0
Привет, Как описано в ожидаемом результате: Когда он находит число, за которым следует пробел, он должен поместить туда тег с этим номером внутри () и перед тем, как встретить следующий номер, за которым следует пробел, следует поставить закрывающий тег. ()
Pmicezjk 5 лет назад
0
Я просто запускаю ваш новый тестовый пример, он работает довольно хорошо. Вы проверяли? соответствует newline`?
Toto 5 лет назад
0
Да действительно сейчас работает отлично !! Потрясающие ! Большая помощь !
Pmicezjk 5 лет назад
0
1 ответ на вопрос
2
Toto
Обновление по комментариям:
Ctrl+H
Найти то, что: (?:^\D*|\G )(\d+)\s+(.+?)\R?(?=\s\d+\s|\z)
Заменить: <VERSETAG=$1>$2</VERSETAG>\n
проверить обернуть
проверьте регулярное выражение
ПРОВЕРЯТЬ . matches newline
Replace all
Объяснение:
(?:^\D*|\G ) # non capture group, beginning of line followed by 0 or more non digits or restart from the last match position (\d+) # group 1, 1 or more digits \s+ # 1 or more spaces (.+?) # group 2, 1 or more any character including new line, not greedy \R? # any kind of linebreak, optional (?=\s\d+\s|\z) # positive lookahead, make sure we have after 1 or more digits surround with spaces or end of file
** Потрясающе Тото! Мы почти на месте! но кажется, что он не работает, когда строка начинается с некоторых текстов: ** `Например, не работает followin:` `1 blablablabla. blablnsnsnns, blalblblbl: blablaa; балал блала. 2 blblb'blbµµ77777µμlblb blblb, blslsµµ105µµnlsllsl. 3 blalblblbl: blablaa; балал блала. 4 blblb'blbµµ9999µμlblb. Blblb, blslsnlsllsl. 5 jsjjsjj; gggbqbqbq: ghshhqhhqh! Gsgsjjsskksk. 6 fshhhshs, nnsnnsns! nsnnsn. dlflflf4532llflflf, vjjsjsjss8776nndndn54; qcqaataab. 7 hhhshhshhshhshhshhs, bslslslsllslsllsllll.
Pmicezjk 5 лет назад
0
@Pmicezjk: просто замените `(?: ^ | \ G)` на `(?: ^ \ D * | \ G)` в начале регулярного выражения. Смотрите мое редактирование.
Toto 5 лет назад
0
`До сих пор не работает (проверьте вокруг стихов 7 и 8). Это то, что я получаю, когда заменяю (?: ^ | \ G) на (?: ^ \ D * | \ G) `:`blalallallal7600hhzhz; nmmkzjzbzbzb34fspmmm: blslslslsavccacac, hkkdlfmfmmf56balalala. hdfmmfm87kdkkkkfkf. blalalallajhshduie.`
Pmicezjk 5 лет назад
0
Я сделал именно то, что вы сказали: просто замените (?: ^ | \ G) на (?: ^ \ D * | \ G). В одном примере текста у меня нет тегов, когда строки начинаются с некоторых текстов. В другом примере текста у меня есть строка, которая начинается с полностью исчезнувшего текста.
Pmicezjk 5 лет назад
0
@Pmicezjk: я полностью переписал регулярное выражение, а не просто добавил `\ D *`
Toto 5 лет назад
1
`Я попробовал последнее средство:` `Найдите что: (?: ^ \ D * | \ G) (\ d +) \ s + (. +?) \ R? (? = \ S \ d + \ s | \ z ) `` Заменить на: $ 2 \ n` `Но некоторые строки, начинающиеся с цифр, больше не работают, как раньше! И не лучше, когда строки начинаются с какого-то текста. `
Pmicezjk 5 лет назад
0
@Pmicezjk: Извините, я вас не понимаю, мне кажется, это работает. Вы проверяли? соответствует newline`? Пожалуйста, [отредактируйте свой вопрос] (https://superuser.com/posts/1374975/edit) и добавьте несколько строк ввода, которые вам не подходят.
Toto 5 лет назад
1
Давайте [продолжим это обсуждение в чате] (https://chat.stackexchange.com/rooms/85708/discussion-between-pmicezjk-and-toto).
Pmicezjk 5 лет назад
0
@Pmicezjk: не стесняйтесь отмечать ответ как принятый, см .: https://superuser.com/help/someone-answers
Toto 5 лет назад
0