Java Matcher.find 和 Matcher.group 的 C#/.NET 等价物
C# / .NET equivalent for Java Matcher.find and Matcher.group
我看到有一些关于 Java Matcher class 的帖子,但我找不到关于具体方法 find()
和 group()
的帖子.
我有这段代码,其中已经定义了 Lane 和 IllegalLaneException:
private int getIdFromLane(Lane lane) throws IllegalLaneException {
Matcher m = pattern.matcher(lane.getID());
if (m.find()) {
return Integer.parseInt(m.group());
} else {
throw new IllegalLaneException();
}
}
查看 Java 文档,我们有以下内容:
find()
- 尝试查找与模式匹配的输入序列的下一个子序列。
group()
- Returns 与上一个匹配项匹配的输入子序列。
我的问题是,这相当于C#中的方法find()
和group()
?
编辑:我忘了说我正在使用 MatchCollection class 和 Regex
C#代码:
private static Regex pattern = new Regex("\d+$"); // variable outside the method
private int getIdFromLane(Lane lane) //throws IllegalLaneException
{
MatchCollection m = pattern.Matches(lane.getID());
...
}
在 C# 上,您将使用正则表达式。正则表达式 class 有一个名为 "Matches" 的函数,它将 return 模式的所有重合匹配项。
每个匹配项都有一个 属性 组,其中存储捕获的组。
所以,查找 -> Regex.Matches,组 -> Match.Groups。
它们不是直接等效的,但它们会为您提供相同的功能。
这是一个简单的例子:
var reg = new Regex("(\d+)$");
var matches = reg.Matches("some string 0123");
List<string> found = new List<string>();
if(matches != null)
{
foreach(Match m in matches)
found.Add(m.Groups[1].Value);
}
//do whatever you want with found
请记住,m.Groups[0] 将包含完整捕获,任何后续组都将成为捕获组。
此外,如果您只希望得到一个结果,那么您可以使用 .Match:
var match = reg.Match("some string 0123");
if(match != null && match.Success)
//Process the Groups as you wish.
我看到有一些关于 Java Matcher class 的帖子,但我找不到关于具体方法 find()
和 group()
的帖子.
我有这段代码,其中已经定义了 Lane 和 IllegalLaneException:
private int getIdFromLane(Lane lane) throws IllegalLaneException {
Matcher m = pattern.matcher(lane.getID());
if (m.find()) {
return Integer.parseInt(m.group());
} else {
throw new IllegalLaneException();
}
}
查看 Java 文档,我们有以下内容:
find()
- 尝试查找与模式匹配的输入序列的下一个子序列。
group()
- Returns 与上一个匹配项匹配的输入子序列。
我的问题是,这相当于C#中的方法find()
和group()
?
编辑:我忘了说我正在使用 MatchCollection class 和 Regex
C#代码:
private static Regex pattern = new Regex("\d+$"); // variable outside the method
private int getIdFromLane(Lane lane) //throws IllegalLaneException
{
MatchCollection m = pattern.Matches(lane.getID());
...
}
在 C# 上,您将使用正则表达式。正则表达式 class 有一个名为 "Matches" 的函数,它将 return 模式的所有重合匹配项。
每个匹配项都有一个 属性 组,其中存储捕获的组。
所以,查找 -> Regex.Matches,组 -> Match.Groups。
它们不是直接等效的,但它们会为您提供相同的功能。
这是一个简单的例子:
var reg = new Regex("(\d+)$");
var matches = reg.Matches("some string 0123");
List<string> found = new List<string>();
if(matches != null)
{
foreach(Match m in matches)
found.Add(m.Groups[1].Value);
}
//do whatever you want with found
请记住,m.Groups[0] 将包含完整捕获,任何后续组都将成为捕获组。
此外,如果您只希望得到一个结果,那么您可以使用 .Match:
var match = reg.Match("some string 0123");
if(match != null && match.Success)
//Process the Groups as you wish.