RegEx Pattern帮助拆分字符串

时间:2010-12-10 01:13:41

标签: regex split managed-c++

我正在尝试将正则表达式定义为拆分一个类似于下面的字符串。 。

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 个答案:

答案 0 :(得分:1)

user364939的代码无法编译。试试这个:

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

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

警告:我在Snippet Compiler中使用C#对此进行了测试,但是使.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;
}

答案 1 :(得分:0)

如果您不想使用正则表达式,

Paul's answer可能是更好的解决方案。但是,如果你这样做,试试这个:

([^,]+),([^,]+)

答案 2 :(得分:-1)

我同意上面的这个家伙。除非你关心其他奇怪的字符,比如|然后你想分开任何不是[0-9A-Za-z]的东西。

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