给出字符串:
/home "1020....2010" main
我希望home
,1020
和2010
使用正则表达式,但仍然存在报价问题。谁能帮我吗?
谢谢你们的帖子。我意识到我的代码可能有一些问题。这是
string pattern [1] = @“blablabla”; string pattern [2] = @“blablabla”; ......
foreach(模式中的字符串){ if(regex.match(line,s).success){ ...... } }
然后出现意外字符“\”
的错误答案 0 :(得分:6)
使用模式:
/(\w+)\s+"(\d+)\.+(\d+)"
home
(或/
之后的任何其他名称)将在$1
中,$2
中的第一个数字和$3
中的最后一个数字
编辑1
我认为@
应该有效,但无法在ideone.com中编译。但这确实有效:
using System;
using System.Text.RegularExpressions;
public class RegexTest
{
public static void Main()
{
Regex r = new Regex("/(\\w+)\\s+\"(\\d+)\\.+(\\d+)\"");
Match m = r.Match("/home \"1020....2010\" main ");
Console.WriteLine("$1 = " + m.Groups[1]);
Console.WriteLine("$2 = " + m.Groups[2]);
Console.WriteLine("$3 = " + m.Groups[3]);
}
}
产生
$1 = home
$2 = 1020
$3 = 2010
编辑2
正如@Seattle在评论中提到的,当在正则表达式字符串之前使用方便的@
时,双引号需要通过在它前面放置双引号来逃避(不是反斜杠!):< / p>
Regex r = new Regex(@"/(\w+)\s+""(\d+)\.+(\d+)""");
答案 1 :(得分:0)
对于上述内容,您需要以下内容:
/(\w+) "(\d+)\.+(\d+)" (\w+)
同时检查:
答案 2 :(得分:0)
如果要匹配引号字符(或其他特殊字符),可以使用反斜杠将其转义。因此,正则表达式中的\"
将匹配“字符。