java - 将正则表达式从 java 转换为 .Net

标签 java c# regex

我正在将一个项目从 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/

相关文章:

java - 将 Java EE 与 javamail 结合使用

c# - process.kill() 是否终止 WaitForExit() (没有时间限制)

c# - .NET 中 IClonable 接口(interface)的用途是什么?

c# - 使用单独的 msi 文件 C# 安装 Outlook COM 插件 bundle

java - 使用正则表达式提取2个字符之间的所有子字符串组合

java - 卡在 Jsoup 解析 Html 中

java - 由于 Maven 依赖关系,Map、List 不是通用的且 isEmpty 函数未定义

java - 为什么在 JDialog 中调用的 JContextMenu 中单击不触发 ActionEvent?

javascript - 如果字符串中存在数组值(类似于正则表达式)

jquery - 名称的跨浏览器 Jquery 正则表达式