Вопрос-ответ

How to extract a substring using regex

Как извлечь подстроку с помощью регулярного выражения

У меня есть строка, содержащая в себе две одинарные кавычки, символ '. Между одинарными кавычками находятся нужные мне данные.

Как я могу написать регулярное выражение для извлечения "нужных мне данных" из следующего текста?

mydata = "some string with 'the data i want' inside";
Переведено автоматически
Ответ 1

Предполагая, что вам нужна часть, заключенная в одинарные кавычки, используйте это регулярное выражение с Matcher:

"'(.*?)'"

Пример:

String mydata = "some string with 'the data i want' inside";
Pattern pattern = Pattern.compile("'(.*?)'");
Matcher matcher = pattern.matcher(mydata);
if (matcher.find())
{
System.out.println(matcher.group(1));
}

Результат:

данные, которые я хочу
Ответ 2

Для этого вам не нужно регулярное выражение.

Добавьте apache commons lang в свой проект (http://commons.apache.org/proper/commons-lang / ), затем используйте:

String dataYouWant = StringUtils.substringBetween(mydata, "'");
Ответ 3
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test {
public static void main(String[] args) {
Pattern pattern = Pattern.compile(".*'([^']*)'.*");
String mydata = "some string with 'the data i want' inside";

Matcher matcher = pattern.matcher(mydata);
if(matcher.matches()) {
System.out.println(matcher.group(1));
}

}
}
Ответ 4

Для этого есть простой однострочник:

String target = myData.replaceAll("[^']*(?:'(.*?)')?.*", "$1");

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

Смотрите живую демонстрацию.

2024-03-01 00:56 java regex string