| View previous topic :: View next topic |
| Author |
Message |
Infocatcher
Joined: 06 Aug 2007 Posts: 1431
|
Posted: Sun Jun 17, 2012 10:04 am Post subject: |
|
|
VladSh
Так ведь была же отдельная тема.
Встроенная замена:
Что: ^([ \t]*)([^ \t\n\r][^\n\r]*)?$
Чем: <\1>[\2]
SearchReplace.js:
Что: ^([ \t]*)([^\n\r]*)$
Чем: <$1>[$2]
[v] Многострочно |
|
| Back to top |
|
 |
VladSh
Joined: 29 Nov 2006 Posts: 2509 Location: Киев, Русь
|
Posted: Sun Jun 17, 2012 8:01 pm Post subject: |
|
|
Infocatcher
Была Но там множество подобных вопросов, хотелось бы перенести их сюда)
Мне это для скрипта надо. В основном для таких задач пользуюсь методом match. И хотелось бы расшифровки, т.к. сейчас наконец-то начинаю с этим разбираться.
Насколько я понимаю:
- значение в первых скобках - пробел и табуляция использованная сколько угодно раз;
- во вторых - всё, кроме переводов строк, сколько угодно раз.
Верно?
^ и $ для обозначения начала и конца строки, только непонятно, в одних регулярках они есть, а в других нет, так для чего они (в доках для меня многое непонятно).
Через replace работает, а через match почему-то нет...(
И работает как-то странно - только надо передавать одно значение, или $1 или $2, а если обе сразу, то не работает.
Last edited by VladSh on Sun Jun 17, 2012 9:45 pm; edited 3 times in total |
|
| Back to top |
|
 |
Infocatcher
Joined: 06 Aug 2007 Posts: 1431
|
Posted: Sun Jun 17, 2012 9:28 pm Post subject: |
|
|
VladSh
Ну так match не умеет вложенные подстроки для множественного поиска.
| Code: | "01234".match(/\d(\d)/); // ["01", "1"]
"01234".match(/\d(\d)/g); // ["01", "23"], то есть содержимое скобок вообще никуда не попадает |
| Quote: | - значение в первых скобках - пробел и табуляция использованная сколько угодно раз;
- во вторых - всё, кроме переводов строк, сколько угодно раз. | Да.
| Quote: | | ^ и $ для обозначения начала и конца строки | Тоже да.
Без них в данном случае не получится найти
(что-то)*(нечто)*
, потому что под это дело попадает пустая строка. |
|
| Back to top |
|
 |
VladSh
Joined: 29 Nov 2006 Posts: 2509 Location: Киев, Русь
|
Posted: Sun Jun 17, 2012 9:43 pm Post subject: |
|
|
Infocatcher
Видимо я тупой, т.к. ничего не понял) Так все доки написаны по регуляркам, - ничего непонятно))
Попробую ещё чуть покурить, т.к. разобраться всё-таки с этим надо.
Ещё надобно взять слово после определённого слова в строке; между этими словами теоретически может быть любое количество пробелов/табуляций.
Пробовал так:
| Code: | var varType = str.match(/Text (.+)/, "$1");
var varType = str.match(/^(Text[ \t]*)(.+)/, "$1");
| но не работает. |
|
| Back to top |
|
 |
Infocatcher
Joined: 06 Aug 2007 Posts: 1431
|
Posted: Mon Jun 18, 2012 3:33 am Post subject: |
|
|
VladSh
У match() только один аргумент.
| Code: | | "Text any string".match(/Text (.+)/)[1]; // "any string" |
|
|
| Back to top |
|
 |
VladSh
Joined: 29 Nov 2006 Posts: 2509 Location: Киев, Русь
|
Posted: Tue Jun 19, 2012 8:34 pm Post subject: |
|
|
Infocatcher
Решил так:
| Code: | var sNull = str.match(/^([\s\t]*)/)[1]; //начальные "пустые" символы текущей строки
var sNotNull = str.replace(/^([\s\t]*)/, ""); //все символы текущей строки, идущие после "пустых" |
Спасибо за участие!  |
|
| Back to top |
|
 |
Infocatcher
Joined: 06 Aug 2007 Posts: 1431
|
Posted: Wed Jun 20, 2012 5:59 am Post subject: |
|
|
VladSh
Если строка уже получена (и не надо учитывать переводы строк), то вот так:
| Code: | var sNull = str.match(/^\s*/)[0];
var sNotNull = str.substr(sNull.length); |
|
|
| Back to top |
|
 |
VladSh
Joined: 29 Nov 2006 Posts: 2509 Location: Киев, Русь
|
Posted: Wed Jun 20, 2012 7:31 am Post subject: |
|
|
Infocatcher
Ваш вариант красивее, и работать будет быстрей.
Спасибо! |
|
| Back to top |
|
 |
guest13
Joined: 08 Jun 2012 Posts: 9
|
Posted: Tue Jul 10, 2012 9:14 am Post subject: |
|
|
| Instructor wrote: | | guest13 wrote: | | ...при поиске вверх зависает AkelPad... | Тестовая |
Спасибро, файл уже можете удалить, я скачал и проверил. Уже не зависает при поиске вверх регулярного выражения вида [ ... ]* Но у меня вопрос... умеет ли ваш текстовый редактор выделять все искомые символы в тексте? Вот например ищу все дефисы с помощью регулярного выражения [\u0006]* и не выделяет даже одного( Пользуюсь стандартным поиском. Если через стандартный поиск такой способ не работает, то каким можно тогда? |
|
| Back to top |
|
 |
opk44
Joined: 16 Jan 2010 Posts: 188
|
Posted: Tue Jul 10, 2012 10:40 am Post subject: |
|
|
| guest13 wrote: | | ...ищу все дефисы с помощью регулярного выражения [\u0006]* и не выделяет даже одного... | 1) Почему Вы решили искать дефис так? Мне думается, что \u0006 (непечатаемый символ) поиску дефисов никак способствовать не должен. И что Вы подразумеваете под дефисом (буквально)? Простой дефис, неразрывный или "минус"?
\u2010
\u2011
\u002D
2) Искомый "дефис" можно просто скопипастить в строку поиска и без регулярных выражений. Выглядеть он там будет не очень презентабельно ("квадратиком"), но и поиск и выделение работать будут. |
|
| Back to top |
|
 |
guest13
Joined: 08 Jun 2012 Posts: 9
|
Posted: Tue Jul 10, 2012 12:17 pm Post subject: |
|
|
"Дефис" тут ни при чём! Я не об этом... Пускай это будет обычный 0.
Я ищу [\u0030]* понятно? Последовательность нулей идущих один за одним. Может это выражение неверно? Потому что обычный поиск нихрена не находит(
И ещё тут же вопрос, который я выше задавал, но его видимо никто не понял. Как можно выделить в тексте СРАЗУ все искомые символы? Вот как в браузере, например, выбираешь "найти...", вводишь слово какое-нибудь и он тебе по всей странице выделяет это слово. Есть ли в этом редакторе плагин чтоли какой-нибудь? |
|
| Back to top |
|
 |
opk44
Joined: 16 Jan 2010 Posts: 188
|
Posted: Tue Jul 10, 2012 1:05 pm Post subject: |
|
|
| guest13 wrote: | | Может это выражение неверно? | 1. "Звездочка" в рег.выр. обозначает "ноль или больше совпадений", поэтому последовательный поиск будет спотыкаться на каждом символе (ноль совпадений). Если нужен поиск "одно или более совпадений", то используется "плюс".
| guest13 wrote: | | Вот как в браузере, ... Есть ли в этом редакторе плагин чтоли какой-нибудь? | 2. "Выделение", а иначе говоря "подсветка" обеспечивается плагином Coder. Т.е. должен быть запущен Coder::HighLight. В настройках этого плагина (Вызвать Coder::Settings) на вкладке HighLight в "Automatic selection marking" (Автоматически отмечать выделенное) поставьте птичку у пункта []Enable. |
|
| Back to top |
|
 |
guest13
Joined: 08 Jun 2012 Posts: 9
|
Posted: Tue Jul 10, 2012 7:31 pm Post subject: |
|
|
Всё понятно, спасибо  |
|
| Back to top |
|
 |
eil
Joined: 15 Nov 2009 Posts: 30 Location: Alex
|
Posted: Wed Aug 08, 2012 7:46 am Post subject: |
|
|
подскажите, почему regex не получаеться применить для русского текста? тоесть в файле есть русс и англ, ввожу в поиск \b\w{5,6}\b и по поиску находятся только те слова, что на англ.
возможно уже спрашивали/отвечали, но побродив по поиску не нашел. |
|
| Back to top |
|
 |
Serge Yolkin
Joined: 27 Jul 2010 Posts: 122
|
Posted: Wed Aug 08, 2012 7:52 am Post subject: |
|
|
eil
ЕМНИП, \w означает "любая ЛАТИНСКАЯ буква", а чтобы и русские искались, замените на [a-zA-Zа-яА-ЯёЁ] |
|
| Back to top |
|
 |
|