Java Quotation Matching - PullRequest
       1

Java Quotation Matching

1 голос
/ 10 июля 2010

Я не уверен, является ли это вопросом регулярного выражения, но мне нужно иметь возможность захватить то, что находится внутри отдельных цитат, и окружить их чем-то.Например:

this is a 'test' of 'something' and 'I' 'really' want 'to' 'solve this'

превратится в

this is a ('test') of ('something') and ('I') ('really') want ('to') ('solve this')

Любая помощь, которую вы можете оказать, будет великолепной!

Спасибо!

Ответы [ 3 ]

1 голос
/ 10 июля 2010
String str = "this is a 'test' of 'something'";
String rep = str.replaceAll("'[^']*'", "($0)"); // stand back, I know regex

Здесь я использовал метод toe replaceAll(), который ищет все совпадения для регулярного выражения "'[^']*'" и заменяет их регулярным выражением "($0)".

Шаблон "'[^']*'" сопоставляет все подстроки, начинающиеся и заканчивающиеся одинарной кавычкой ('), и между ними находятся любые символы, кроме другой одинарной кавычки ([^']), и они могут появляться любое количество раз (* 1 010 *). Заменить их на "($0)" означает брать каждое совпадение ($0) и заключать его в скобки.

0 голосов
/ 10 июля 2010

Один простой способ (но не всегда действительный) заключается в следующем Если у вас всегда есть ['] и ['], вы можете сделать это:

myString.replace(" '"," ('"); // replaces all <space_apostrophe> with <space_bracket_apostrophe>

Сделайте то же самое для заднего кронштейна:)


Еще одна вещь - почему у вас даже есть слова, окруженные апострофами? Это обязательно, что они должны быть такими? Если вы сделали их такими, почему вы это сделали, а затем ищите другой подход!

0 голосов
/ 10 июля 2010

Если вы можете игнорировать одиночные апострофы, вы можете сделать это так (код C # должен легко переводиться)

string input = "this is a 'test' of 'something' and ...";
Console.WriteLine(Regex.Replace(input, "'([^']*)'", "('$1')"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...