AkelPad Forum Index AkelPad
Support forum
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Регулярные выражения
Goto page Previous  1, 2, 3, 4, 5, 6, 7  Next
 
Post new topic   Reply to topic    AkelPad Forum Index -> Discussion (Russian)
View previous topic :: View next topic  
Author Message
Infocatcher



Joined: 06 Aug 2007
Posts: 1620

PostPosted: Sun Jun 17, 2012 10:04 am    Post subject: Reply with quote

VladSh
Так ведь была же отдельная тема. Smile

Встроенная замена:
Что: ^([ \t]*)([^ \t\n\r][^\n\r]*)?$
Чем: <\1>[\2]

SearchReplace.js:
Что: ^([ \t]*)([^\n\r]*)$
Чем: <$1>[$2]
[v] Многострочно
Back to top
View user's profile Send private message Visit poster's website
VladSh



Joined: 29 Nov 2006
Posts: 2610
Location: Киев, Русь

PostPosted: Sun Jun 17, 2012 8:01 pm    Post subject: Reply with quote

Infocatcher
Была Smile Но там множество подобных вопросов, хотелось бы перенести их сюда)

Мне это для скрипта надо. В основном для таких задач пользуюсь методом 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
View user's profile Send private message Visit poster's website
Infocatcher



Joined: 06 Aug 2007
Posts: 1620

PostPosted: Sun Jun 17, 2012 9:28 pm    Post subject: Reply with quote

VladSh
Ну так match не умеет вложенные подстроки для множественного поиска.
Code:
"01234".match(/\d(\d)/); // ["01", "1"]
"01234".match(/\d(\d)/g); // ["01", "23"], то есть содержимое скобок вообще никуда не попадает


Quote:
- значение в первых скобках - пробел и табуляция использованная сколько угодно раз;
- во вторых - всё, кроме переводов строк, сколько угодно раз.
Да.

Quote:
^ и $ для обозначения начала и конца строки
Тоже да. Smile
Без них в данном случае не получится найти
(что-то)*(нечто)*
, потому что под это дело попадает пустая строка.
Back to top
View user's profile Send private message Visit poster's website
VladSh



Joined: 29 Nov 2006
Posts: 2610
Location: Киев, Русь

PostPosted: Sun Jun 17, 2012 9:43 pm    Post subject: Reply with quote

Infocatcher
Видимо я тупой, т.к. ничего не понял) Так все доки написаны по регуляркам, - ничего непонятно))
Попробую ещё чуть покурить, т.к. разобраться всё-таки с этим надо.

Ещё надобно взять слово после определённого слова в строке; между этими словами теоретически может быть любое количество пробелов/табуляций.
Пробовал так:
Code:
var varType = str.match(/Text (.+)/, "$1");
var varType = str.match(/^(Text[ \t]*)(.+)/, "$1");
но не работает.
Back to top
View user's profile Send private message Visit poster's website
Infocatcher



Joined: 06 Aug 2007
Posts: 1620

PostPosted: Mon Jun 18, 2012 3:33 am    Post subject: Reply with quote

VladSh
У match() только один аргумент.
Code:
"Text any string".match(/Text (.+)/)[1]; // "any string"
Back to top
View user's profile Send private message Visit poster's website
VladSh



Joined: 29 Nov 2006
Posts: 2610
Location: Киев, Русь

PostPosted: Tue Jun 19, 2012 8:34 pm    Post subject: Reply with quote

Infocatcher
Решил так:
Code:
var sNull = str.match(/^([\s\t]*)/)[1];      //начальные "пустые" символы текущей строки
var sNotNull = str.replace(/^([\s\t]*)/, "");      //все символы текущей строки, идущие после "пустых"

Спасибо за участие! Very Happy
Back to top
View user's profile Send private message Visit poster's website
Infocatcher



Joined: 06 Aug 2007
Posts: 1620

PostPosted: Wed Jun 20, 2012 5:59 am    Post subject: Reply with quote

VladSh
Если строка уже получена (и не надо учитывать переводы строк), то вот так:
Code:
var sNull = str.match(/^\s*/)[0];
var sNotNull = str.substr(sNull.length);
Back to top
View user's profile Send private message Visit poster's website
VladSh



Joined: 29 Nov 2006
Posts: 2610
Location: Киев, Русь

PostPosted: Wed Jun 20, 2012 7:31 am    Post subject: Reply with quote

Infocatcher
Ваш вариант красивее, и работать будет быстрей.
Спасибо!
Back to top
View user's profile Send private message Visit poster's website
guest13



Joined: 08 Jun 2012
Posts: 9

PostPosted: Tue Jul 10, 2012 9:14 am    Post subject: Reply with quote

..

Last edited by guest13 on Wed May 28, 2014 1:40 am; edited 1 time in total
Back to top
View user's profile Send private message
opk44



Joined: 16 Jan 2010
Posts: 335

PostPosted: Tue Jul 10, 2012 10:40 am    Post subject: Reply with quote

guest13 wrote:
...ищу все дефисы с помощью регулярного выражения [\u0006]* и не выделяет даже одного...
1) Почему Вы решили искать дефис так? Мне думается, что \u0006 (непечатаемый символ) поиску дефисов никак способствовать не должен. И что Вы подразумеваете под дефисом (буквально)? Простой дефис, неразрывный или "минус"?
\u2010
\u2011
\u002D

2) Искомый "дефис" можно просто скопипастить в строку поиска и без регулярных выражений. Выглядеть он там будет не очень презентабельно ("квадратиком"), но и поиск и выделение работать будут.
Back to top
View user's profile Send private message
guest13



Joined: 08 Jun 2012
Posts: 9

PostPosted: Tue Jul 10, 2012 12:17 pm    Post subject: Reply with quote

..

Last edited by guest13 on Wed May 28, 2014 1:42 am; edited 1 time in total
Back to top
View user's profile Send private message
opk44



Joined: 16 Jan 2010
Posts: 335

PostPosted: Tue Jul 10, 2012 1:05 pm    Post subject: Reply with quote

guest13 wrote:
Может это выражение неверно?
1. "Звездочка" в рег.выр. обозначает "ноль или больше совпадений", поэтому последовательный поиск будет спотыкаться на каждом символе (ноль совпадений). Если нужен поиск "одно или более совпадений", то используется "плюс".
guest13 wrote:
Вот как в браузере, ... Есть ли в этом редакторе плагин чтоли какой-нибудь?
2. "Выделение", а иначе говоря "подсветка" обеспечивается плагином Coder. Т.е. должен быть запущен Coder::HighLight. В настройках этого плагина (Вызвать Coder::Settings) на вкладке HighLight в "Automatic selection marking" (Автоматически отмечать выделенное) поставьте птичку у пункта []Enable.
Back to top
View user's profile Send private message
guest13



Joined: 08 Jun 2012
Posts: 9

PostPosted: Tue Jul 10, 2012 7:31 pm    Post subject: Reply with quote

..

Last edited by guest13 on Wed May 28, 2014 1:43 am; edited 1 time in total
Back to top
View user's profile Send private message
eil



Joined: 15 Nov 2009
Posts: 30
Location: Alex

PostPosted: Wed Aug 08, 2012 7:46 am    Post subject: Reply with quote

подскажите, почему regex не получаеться применить для русского текста? тоесть в файле есть русс и англ, ввожу в поиск \b\w{5,6}\b и по поиску находятся только те слова, что на англ. Confused
возможно уже спрашивали/отвечали, но побродив по поиску не нашел.
Back to top
View user's profile Send private message
Serge Yolkin



Joined: 27 Jul 2010
Posts: 270

PostPosted: Wed Aug 08, 2012 7:52 am    Post subject: Reply with quote

eil
ЕМНИП, \w означает "любая ЛАТИНСКАЯ буква", а чтобы и русские искались, замените на [a-zA-Zа-яА-ЯёЁ]
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    AkelPad Forum Index -> Discussion (Russian) All times are GMT
Goto page Previous  1, 2, 3, 4, 5, 6, 7  Next
Page 3 of 7

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


SourceForge.net Logo Powered by phpBB © 2001, 2005 phpBB Group