Регулярное выражение; обратная ссылка на символ, который НЕ был сопоставлен в наборе символов

Я хочу построить регулярное выражение, которое соответствует либо 'либо ", а затем соответствует другим символам, заканчивающимся, когда 'или "соответственно соответствует, в зависимости от того, что было встречено в самом начале. Таким образом, эта проблема кажется достаточно простой, чтобы решить ее с помощью обратной ссылки в конце; вот некоторый код регулярного выражения ниже (это на Java, поэтому обратите внимание на дополнительные escape-символы, такие как \перед "):

private static String seekerTwo = "(['\"])([a-zA-Z])([a-zA-Z0-9():;/`\\=\\.\\,\\- ]+)(\\1)";

Этот код будет успешно справляться с такими вещами, как:

"hello my name is bob"
'i live in bethnal green'

Проблема возникает, когда у меня есть такая строка:

"hello this seat 'may be taken' already"

Использование приведенного выше регулярного выражения приведет к сбою в начальной части при обнаружении ', затем оно будет продолжено и успешно совпадет с 'может быть взят'... но этого явно недостаточно, мне нужно, чтобы вся строка соответствовала

Я думаю, что мне нужен способ игнорировать тип кавычки, который НЕ был сопоставить в самой первой группе, включив его в качестве символа в набор символов 3-й группы.Однако я не знаю, как это сделать.Есть ли какая-то скрытая функция обратной ссылки НЕ или что-то в этом роде? Что-то, что я могу использовать для ссылки на персонажа в 1-й группе, который НЕ был сопоставлен?? Или каким-то другим образом решить мою затруднительную ситуацию?

7
задан flamming_python 15 March 2012 в 11:18
поделиться