2012-01-09 3 views
1

Вот типы строк, которые я хочу, чтобы соответствоватьRegex матч между двумя цитатами

(строка являются одинарные кавычки разделителями (думаю var str = '"hi, what"s up, what a nice day"';)):

  1. ' "This is a str"'
  2. ' "This is also a str "
  3. '"So is this'
  4. '"This should "also match un"til th"e last "'

В каждом случае он должен захватывать все, что есть после первого dquote, если перед ним есть только пробелы до последней цитаты (что совершенно необязательно).

Другое дело, строка, содержащая только ", не должна соответствовать ex '""""""""""""' не должна совпадать.

Также ведущие и конечные пробелы игнорируются как между кавычками, так и вне кавычек.

Вот регулярное выражение у меня до сих пор:

/^\s*\"\s*(.*?)\s*(?:\"\s*)?$ 

Но он также получает '""""""""""""""""', так что это, где я застрял.

Что я могу сделать, чтобы не соответствовать целой строке только dquotes?

EDIT:

Я думаю, что я объяснил, что я хочу не так, я хочу, чтобы соответствовать строке dquotes но не захвата любым из него

+2

http://www.txt2re.com/index-php.php3. Этот сайт может помочь - он позволяет вам создавать RegEx из ввода образца. Кроме того, для тестирования: http://gskinner.com/RegExr/. –

ответ

1

Вы можете изменить ваше регулярное выражение, так что содержание содержит по крайней мере, один не «характер:

/^\s*\"\s*(.*?[^"].*?)\s*(?:\"\s*)?$/ 

Update: Если вы не хотите начинать и задний» для захвата, просто позволить некоторые из них на границах:

/^\s*\"+\s*(.*?)\s*(?:\"+\s*)?$/ 
+0

Я был неясно, я имел в виду, что хочу, чтобы он соответствовал строке, но ничего не захватывал. +1 за то, что я спросил, даже если это не то, что я имел в виду. – qwertymk

+0

обновил мой ответ - это то, что вы имели в виду? –

+0

Нет, я имею в виду, что если вся строка является dquotes, я хочу, чтобы она соответствовала строке, но не фиксировала какую-либо ее часть. то есть соответствующий массив будет иметь элемент match [1] пустую строку. – qwertymk

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