2013-08-16 2 views
2

Это должно быть верноКаков правильный способ обнаружения множественных вхождений небелых пространств в регулярном выражении?

kword = dontmatter ~~ abC#include 
kword = dontmatter ~~ abc#include 
kword = dontmatter ~~abC#include 
kword = dontmatter ~~ a bC#include 

Это то, что я сделал до сих пор:

/~~\s*[^\s]+\s*#include/.test(kword) 

условие не проходит 4-й KWord. Зачем?

+0

Вместо '[^ \ s]', почему бы просто не использовать '\ S'? – Ian

ответ

1

Эта часть /~~\s*[^\s]+\s* соответствует только ~~ a, поэтому остальная часть строки bC#include, которой не соответствует #include.

~~\s*[^\s].+?#include должно соответствовать тому, что вы хотите. [^\s].*? соответствует минимум одному символу, который не является пробелом, а затем соответствует всем символам, не жадным, а затем #include.

+0

Хорошо, спасибо –

+1

@fireflieslive Ваше предложенное редактирование было отклонено как неверное, потому что '[^ \ s]. +?' Потребовал бы хотя бы одного символа между символом без пробела и '# include', поэтому' kword = dontmatter ~~ a # include' потерпит неудачу. Я полагаю, вы хотите, чтобы это соответствовало? Если это так, это регулярное выражение в начале * этого предложения, которое должно быть исправлено (+ должно быть изменено на *), а не наоборот. –

Смежные вопросы