Справка по шаблону RegEx для разделения строки - PullRequest
2 голосов
/ 10 декабря 2010

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

SQL12345,54321SQL    

XXXXX,XXXXX

Where X = [0-9A-Za-z] and can be repeated one or more times on each side of the delimeter (,).

Шаблон RegEx, который я придумал.,.

"([0-9A-Za-z]+)(,)([0-9A-Za-z]+)"

Мне нужна только одна группа на каждой стороне разделителя.Кажется, я получаю результаты, которые выглядят так.,.

myStrArr[0] = ""
myStrArr[1] = "SQL12345"
myStrArr[2] = ","
myStrArr[3] = "54321SQL"
myStrArr[4] = ""

Итак, почему я получаю начало строки и конец строки (элементы массива 0 и 4).И как я могу исправить свой шаблон регулярных выражений, чтобы они не возвращались?

СПАСИБО!

Ответы [ 3 ]

1 голос
/ 10 декабря 2010

код user364939 не скомпилируется.Попробуйте это:

    System.String  originalString = "SQL12345,54321SQL";
    System.String[] splitArray = originalString.Split(',');

    System.Console.WriteLine(splitArray[0]);
    System.Console.WriteLine(splitArray[1]);

Предостережение: я протестировал это с C # в Snippet Compiler, но сделал ссылки .NET многословными, надеясь, что он будет хорошо переведен в управляемый C ++.

Вот управляемая версия C ++:

#include "stdafx.h"
using namespace System;

int main(array<System::String ^> ^args)
{
    String^ p = "SQL12345,54321SQL";
    array<String^>^ a = p->Split(',');

    Console::WriteLine(a[0]);
    Console::WriteLine(a[1]);

    Console::ReadLine();
    return 0;
}
0 голосов
/ 10 декабря 2010

Ответ Павла может быть лучшим решением, если вы не хотите использовать регулярное выражение.Если вы это сделаете, попробуйте это:

([^,]+),([^,]+)
0 голосов
/ 10 декабря 2010

Я согласен с чуваком выше.Если вы не заботитесь о других странных персонажей, как |и т. д. Тогда вы захотите разделить что-либо, что не является [0-9A-Za-z].

   String myString = "SQL12345,54321SQL";
   String[] array = myString .split(",");
...