У меня есть строка с двумя одинарными кавычками, '
символ. Между одинарными кавычками находятся данные, которые я хочу.
Как я могу написать регулярное выражение, чтобы извлечь "данные, которые я хочу" из следующего текста?
mydata = "some string with 'the data i want' inside";
java
regex
string
text-extraction
Asdasd
источник
источник
this 'is' my 'data' with quotes
он остановится раньше и вернетсяis
вместо сопоставления как можно большего количества символов и возвратаis' my 'data
, что является поведением по умолчанию.Вам не нужно регулярное выражение для этого.
Добавьте apache commons lang в ваш проект ( http://commons.apache.org/proper/commons-lang/ ), затем используйте:
источник
источник
Для этого есть простая строчка:
Делая соответствующую группу необязательной, это также учитывает кавычки, не найденные, возвращая пробел в этом случае.
Смотрите живую демонстрацию .
источник
Поскольку вы также отметили Scala, решение без регулярных выражений, которое легко обрабатывает несколько строк в кавычках:
источник
.split('\'').get(2)
или что-то подобное в Java? Я думаю, что вам, возможно, понадобится выполнить сканирование мозга, если вы считаете, что это удобочитаемое решение - похоже, кто-то пытался сделать мне какой-нибудь код-гольф.источник
как в JavaScript:
фактическое регулярное выражение:
/'([^']+)'/
если вы используете не жадный модификатор (как в другом посте), это так:
это чище.
источник
В Скале
источник
String dataIWant = mydata.split("'")[1];
Посмотреть демо
источник
Apache Commons Lang предоставляет множество вспомогательных утилит для API java.lang, прежде всего методы манипулирования строками. В вашем случае начальная и конечная подстроки одинаковы, поэтому просто вызовите следующую функцию.
Если начальная и конечная подстроки отличаются, используйте следующий перегруженный метод.
Если вы хотите, чтобы все экземпляры совпадали подстрок, то используйте,
Для рассматриваемого примера получить все экземпляры совпадающей подстроки
источник
Вы можете использовать это, я использую цикл while для хранения всех подстрок совпадений в массиве, если вы используете
if (matcher.find()) { System.out.println(matcher.group(1)); }
Вы получите подстроку совпадений, чтобы использовать ее для получения всех подстрок совпадений.
источник
добавить зависимость apache.commons от вашего pom.xml
И ниже код работает.
источник
Некоторые, как группа (1) не работает для меня. Я использовал группу (0), чтобы найти версию URL.
источник