2010-12-10 87 views
2

我有一个可怕的时间试图获得定义的正则表达式来拆分字符串,看起来像下面。 。 。正则表达式模式帮助分割字符串

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)。而且,我怎样才能修复我的正则表达式模式,所以我没有得到这些返回?

谢谢!

+1

什么语言?为什么不在这个逗号上使用简单的字符串分割?这里的正则表达式似乎是矫枉过正。 – 2010-12-10 01:17:10

+0

+1给Paul的回答。正则表达式在这里似乎是不必要的。如果你只对字符串而不是模式感兴趣,那么字符串分割应该解决这个问题。根据你的数组结构,我猜你正在使用python。是这样吗? – Gangadhar 2010-12-10 01:36:32

回答

-1

我同意上面的家伙。除非你关心像|这样的其他怪异字符等等。然后你想分裂任何不是[0-9A-Za-z]的东西。

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

user364939的代码不会编译。试试这个:

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

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

警告:我测试了用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; 
} 
0

Paul's answer可能是一个更好的解决办法,如果你不想使用正则表达式。如果你这样做,试试这个:

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