我试图创建一个正则表达式来标记一个字符串。一个示例字符串会是。RegEx到Tokenize字符串
John Mary, "Name=blah;Name=blahAgain" "Hand=1,2"
我试图找回:
- 约翰
- 玛丽
- 名称=等等;名称= blahAgain
- 手= 1,2
我试图创建一个正则表达式来标记一个字符串。一个示例字符串会是。RegEx到Tokenize字符串
John Mary, "Name=blah;Name=blahAgain" "Hand=1,2"
我试图找回:
对于这个具体的例子,我会这样做:
([^\s]*)\s+([^,\s]*)\s*,\s*"([^"]*)"\s+"([^"]*)"
更新:修改拆分玛丽和约翰
感谢您的建议,但我是使用java中的扫描器类,它似乎并不喜欢它 – binarymelon 2010-01-19 18:46:15
@slebetman:玛丽和约翰不会与你的正则表达式分开 – 2010-01-19 19:02:32
这很奇怪,我很肯定上述是相当简单的老派正规表达式,没有任何怪异的PCRE或egrep东西你确定你已经用''''在java中逃脱了''' – slebetman 2010-01-19 19:03:00
这很容易:
([^ ])+
这将得到玛丽以及逗号后的逗号。它也不会一次捕获所有需要的字段。 – ferdystschenko 2010-01-19 20:05:09
实际上,它每次只捕获一个字符,除非你把'+'放入了隐含的内容。 – ferdystschenko 2010-01-19 20:07:47
由于您使用的Java,为什么不使用的StringTokenizer?例如: -
StringTokenizer st = new StringTokenizer("String to tokenize", " ");
while (st.hasMoreTokens())
{
// get next token
String someVariable = st.nextToken();
}
这适用于你的例子:
(\w+) (\w+), \"([^"]+)" \"([^"]+)
贵公司的所有字符串有完全相同的模式?
一种可能的方式:在拆分,
后跟一个space
或在space
或quotation mark
之一:
"John Mary, \"Name=blah;Name=blahAgain\" \"Hand=1,2\"".split(",\\s|[\\s\"]")
一个例子(没有任何进一步的说明)可能不够。 “Name = blah; Name = blahAgain”'里面可以有'''''可能不会,但是这并不会伤害到知道。'Name = blah; Name = blahAgain“'里面的空格呢?名字总是两个单独的名字吗?乔·埃伦·彼得,......(乔·埃伦和彼得)怎么样?仅举几例可能存在问题的案例 – 2010-01-19 19:45:47