|
|
|
использование регулярных выражений
|
|||
|---|---|---|---|
|
#18+
Можно ли с помощю RegExp выбрать подстроки находящиеся между определенными символами. Например из строки "aab1ccab2c" надо выбрать строки, находящиеся между символами "a" и "c", т.е. это должны быть строки "b1" и "b2" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2007, 21:46 |
|
||
|
использование регулярных выражений
|
|||
|---|---|---|---|
|
#18+
Кааааанешно можно. Нет ничего проще. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2007, 21:57 |
|
||
|
использование регулярных выражений
|
|||
|---|---|---|---|
|
#18+
А если надо выбрать строку, находящуюся не между символами, а между строк, которые могут состоять из нескольких символов? Например, для вышеприведенного примера вернуть строку, находящуюся между "ab1" и "ab2", т.е. "cc". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2007, 00:41 |
|
||
|
использование регулярных выражений
|
|||
|---|---|---|---|
|
#18+
тогда получается еще проще: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2007, 00:57 |
|
||
|
использование регулярных выражений
|
|||
|---|---|---|---|
|
#18+
White Owlтогда получается еще проще: Код: plaintext Да, но для строки "ab1weab1ccab2c" этот вариант вернет "weab1cc", а надо "сс" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2007, 01:04 |
|
||
|
использование регулярных выражений
|
|||
|---|---|---|---|
|
#18+
Не понимающий RegExpДа, но для строки "ab1weab1ccab2c" этот вариант вернет "weab1cc", а надо "сс" Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2007, 03:13 |
|
||
|
использование регулярных выражений
|
|||
|---|---|---|---|
|
#18+
PA Не понимающий RegExpДа, но для строки "ab1weab1ccab2c" этот вариант вернет "weab1cc", а надо "сс" Код: plaintext Я же строку привожу для примера, вышеуказанный pattern неправильно сработает для строки "aab1ccab2c", когда надо вернуть текст между "a" и "c". Возвращает только "b2", а "b1" нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2007, 09:29 |
|
||
|
использование регулярных выражений
|
|||
|---|---|---|---|
|
#18+
А чем самый первый пример не нравится? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2007, 11:00 |
|
||
|
использование регулярных выражений
|
|||
|---|---|---|---|
|
#18+
DeggasadА чем самый первый пример не нравится? он работает только в том случае, если строки между которыми надо вернуть строку состоят из одного символа. В общем случа должно работать так: Из произвольной строки надо вернуть подстроку, находящуюся между двумя заданными подстроками. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2007, 11:48 |
|
||
|
использование регулярных выражений
|
|||
|---|---|---|---|
|
#18+
Не понимающий RegExp DeggasadА чем самый первый пример не нравится? он работает только в том случае, если строки между которыми надо вернуть строку состоят из одного символа. В общем случа должно работать так: Из произвольной строки надо вернуть подстроку, находящуюся между двумя заданными подстроками. У меня вроде всё работает! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2007, 13:25 |
|
||
|
использование регулярных выражений
|
|||
|---|---|---|---|
|
#18+
Беру слова обратно вроде не работает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2007, 13:43 |
|
||
|
использование регулярных выражений
|
|||
|---|---|---|---|
|
#18+
Не понимающий RegExp White Owlтогда получается еще проще: Код: plaintext Да, но для строки "ab1weab1ccab2c" этот вариант вернет "weab1cc", а надо "сс"Ну тогда чуть сложнее :) Не так давно в "Программировании" был топик на эту тему. В итоге придумали два варианта: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2007, 18:16 |
|
||
|
использование регулярных выражений
|
|||
|---|---|---|---|
|
#18+
Не понимающий RegExpВ общем случа должно работать так: Из произвольной строки надо вернуть подстроку, находящуюся между двумя заданными подстроками.В этом и есть тонкость регулярных выражений - точность постановки задачи очень важна. До тех пор пока ты этого не поймешь - твой ник не изменится :) Задачу "Из произвольной строки надо вернуть подстроку, находящуюся между двумя заданными подстроками." Идеально решает шаблон /first(.+)second/, в условии задачи не сказано что между ними что-то там "не должно быть". Поэтому и шаблон /first(.+)second/ наложенный на строку "first-first-second-third-second" вернет подстроку "-first-second-third-". И это совершенно правильное решение задачи. Хочешь чтобы подстрока обрезалась по первому появлению второго слова? Тогда запрети жадность: /first(.+?)second/ Это уже вернет подстроку "-first-" - первое вхождение первого слова и первое вхождение второго слова. Но теперь у нас и начальная задача уже другая, теперь это уже "Из произвольной строки вернуть подстроку, после первого вхождения одного заданного слова и до первого вхождения другого заданного слова".... Ну а как решается задача "вернуть подстроку между двумя ближайшими вхождениями двух заданных слов" описывать очень долго. Лучше почитай тут: /topic/492302 А еще будет очень-очень полезно изучить Perl, когда научишься на нем писать - регулярки станут семечаками. Ну кроме особо тяжелых случаев :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2007, 18:33 |
|
||
|
|

start [/forum/topic.php?fid=60&msg=35024513&tid=2162917]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
54ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 244ms |
| total: | 381ms |

| 0 / 0 |
