Найти регулярное выражение между двумя символами Java [duplicate]

Просто, чтобы дать общий ответ здесь обо всех трех API MYSQL со ссылкой:

Вы не можете смешивать ни одно из трех ( mysql_* , mysqli_* , PDO ) API MYSQL от PHP вместе, он просто не работает. Это даже в справочнике FAQ :

Невозможно смешать расширения. Например, передача mysqli в PDO_MySQL или ext / mysql не будет работать.

blockquote>

Вам нужно использовать тот же API MySQL и связанные с ним функции, от подключения к запросам .

18
задан rgettman 9 July 2013 в 22:57
поделиться

7 ответов

Попробуйте это регулярное выражение:

'(.*?)"

Как строковый литерал Java, вам придется записать его следующим образом:

"'(.*?)\""

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

Pattern pattern = Pattern.compile("'(.*?)\"");
Matcher matcher = pattern.matcher(str);
if (matcher.find()) {
    System.out.println(matcher.group(1));
}

Смотрите, как он работает в Интернете: ideone

28
ответ дан Mark Byers 21 August 2018 в 11:29
поделиться
  • 1
    Спасибо за помощь работает как шарм – bryan 10 February 2011 в 22:19
  • 2
    не работает, когда «повторено», то есть «21 * 90'90'89 \», «возвращено» 90'9089 », – Christian Agrazar 5 August 2015 в 14:26
public static void main(final String[] args) {
    final String str = "21*90'89\"";
    final Pattern pattern = Pattern.compile("[\\*'\"]");
    final String[] result = pattern.split(str);
    System.out.println(Arrays.toString(result));
}

Это то, что вы ищете ... Программа, описанная выше, создает:

[21, 90, 89]
4
ответ дан chahuistle 21 August 2018 в 11:29
поделиться
  • 1
    Это на самом деле именно то, что мне нужно, хотя мой вопрос не заставил его так выглядеть ... спасибо большое – bryan 15 February 2011 в 18:54

Если у вас всегда будет такая строка (с 3 частями), то этого достаточно:

 String str= "21*90'89\"";
 String between = str.split("\"|'")[1];
10
ответ дан Goran Jovic 21 August 2018 в 11:29
поделиться

Я пропустил здесь самое простое решение:

str.replaceFirst(".*'(.*)\".*", "$1");

Это решение, безусловно, самое короткое, однако оно имеет некоторые недостатки:

  • строка выглядит по-другому, вы получите всю строку обратно без предупреждения.
  • Это не очень эффективно, так как используемое regex компилируется для каждого использования.

Я бы не используйте его, за исключением быстрого взлома, или если я действительно буду уверен в том, что формат ввода.

0
ответ дан maaartinus 21 August 2018 в 11:29
поделиться
String str= 21*90'89;
String part= str.split("[*|']");
System.out.println(part[0] +""+part[1]);
4
ответ дан Rob Hruska 21 August 2018 в 11:29
поделиться
  • 1
    -1: A) он не компилируется, B) @Goran Jovic ответил, по сути, то же самое примерно на 11 минут раньше, C) он печатает «2189», что не похоже на то, что ищет OP – Rob Hruska 10 February 2011 в 22:11
    String str="abc#defg@lmn!tp?pqr*tsd";               
    String special="!?@#$%^&*()/<>{}[]:;'`~";           
    ArrayList<Integer> al=new ArrayList<Integer>();         
    for(int i=0;i<str.length();i++)
    {
        for(int j=0;j<special.length();j++)
            if(str.charAt(i)==special.charAt(j))        
                al.add(i);
    }
    for(int i=0;i<al.size()-1;i++)
    {
        int start=al.get(i);
        int end=al.get(i+1);
        for(int j=start+1;j<end;j++)
            System.out.print(str.charAt(j));
        System.out.print(" ");
    }
0
ответ дан Safdar Ali Mirza 21 August 2018 в 11:29
поделиться
4
ответ дан Rob Hruska 1 November 2018 в 05:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: