我正在将一个项目从 java 转换为 C#。我不知道 C# 中以下正则表达式的等价性是什么。
The regular expression : Customer rating (?<rating>\d.\d)/5.0
The java string : "Customer rating (?<rating>\\d.\\d)/5.0"
这是java代码:
private static final Pattern ratingPattern = Pattern.compile("Customer rating (?<rating>\\d.\\d)/5.0");
...
m = Retriever.ratingPattern.matcher(X);
if (m.matches()) {
...
}
它适用于( X=客户评级 1.0/5.0 )。但这是 C# 代码:
static Regex rx = new Regex(@"Customer rating (?<rating>\\d.\\d)/5.0");
...
MatchCollection matches = rx.Matches(X);
if (matches.Count > 0)
{
...
}
它不适用于 ( X=客户评分 1.0/5.0 )。我的意思是 (Matches.count) 对于 ( X=客户评分 1.0/5.0 ) 始终为 0
如果您有任何想法,请帮助我。
谢谢
最佳答案
如果正则表达式出现在逐字字符串中,则无需再次转义 baclslash。
@"Customer rating (?<rating>\d\.\d)/5\.0"
并且还转义正则表达式中存在的所有点,因为点匹配任何字符,而不仅仅是文字点。
在逐字字符串中,\\d
匹配文字反斜杠和字符 d
。因此,您的正则表达式会搜索反斜杠和文字 d
。因为没有,所以你的正则表达式失败了。
关于java - 将正则表达式从 java 转换为 .Net,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29048060/