我正在寻找正则表达式,以便在输入为以下任意内容时将匹配分别设为"HELLO"
和"WORLD"
:
"HELLO", "WORLD"
"HELL"O"", WORLD"
"HELL,O","WORLD"
我尝试了很少的组合,但它们似乎都不适用于所有场景。
我希望我的c#代码执行类似的操作:
string pattern = Regex Pattern;
// input here could be any one of the strings given above
foreach (Match match in Regex.Matches(input, pattern))
{
// first iteration would give me Hello
// second iteration would give me World
}
答案 0 :(得分:4)
如果您只在Hello和World上要求它,我建议Sebastian的答案。这是一个完美的方法。如果你真的在那里放置其他数据,并且不想捕获Hello和World。
这是另一种解决方案:
^([A-Z \ “\,] +)[\” \,\ S] +([A-Z \“\,] +)$
唯一的问题是,这将使HELLO和WORLD回归“和,在其中。
然后我们由你来替换“和输出字符串中的任何内容。
示例:
//RegEx: ^([A-Z\"\,]+)[\"\,\s]+([A-Z\"\,]+)$
string pattern = "^([A-Z\"\\,]+)[\"\\,\\s]+([A-Z\"\\,]+)$";
System.Text.RegularExpressions.Regex Reg = new System.Text.RegularExpressions.Regex(pattern);
string MyInput;
MyInput = "\"HELLO\",\"WORLD\"";
MyInput = "\"HELL\"O\"\",WORLD\"";
MyInput = "\"HELL,O\",\"WORLD\"";
string First;
string Second;
if (Reg.IsMatch(MyInput))
{
string[] result;
result = Reg.Split(MyInput);
First = result[1].Replace("\"","").Replace(",","");
Second = result[2].Replace("\"","").Replace(",","");
}
第一和第二将是Hello和World。
希望这会有所帮助。如果您需要任何进一步的帮助,请告诉我。
答案 1 :(得分:2)
试试这个:
Regex.Match(input, @"^WORLD|HELL[""|O|,]?O[""|O|,]$").Success
答案 2 :(得分:0)
我总是觉得使用像http://www.gskinner.com/RegExr/这样的在线正则表达式测试器很有用。