正则表达式匹配多次出现
Regex match with multiple occurrences
例如字符串看起来像
90001:21880004:los angeles
10001:21880005:new york
我想通过正则表达式提取最后的城市名称。我发现这两个很难做到 :
有人能指出我正确的方向吗?
你可能会使用像这样的正则表达式:
(\d+:)+([A-Za-z\s]+)
在哪里可以捕获编号组 (\d+:)+
然后文本 ([A-Za-z\s])
将捕获大多数城市的名称。
至少这是它的基本要点。
您可以使用 String.Split
而不是为此使用正则表达式
string line = "90001:21880004:los angeles";
string cityName = line.Split(':')[2]; // Gives 'los angeles'
这会将字符串分成三部分(因为你有两个 :
s)并取第三部分(记住数组是从 0 开始的),其中包含你的城市名称。
请确保您的数据集中没有城市名称中包含 :
。
你可以在没有 Regex
的情况下实现这一点:
string la = "90001:21880004:los angeles".Split(':')[2];
string ny = "10001:21880005:new york".Split(':')[2];
如果您知道正好有 2 个冒号,您可以这样做:
\d:\d:([a-zA-Z\s]+)
通过不在正则表达式无法捕获的数字周围添加括号。
如果你真的想使用正则表达式:
^\d+:\d+:(.+)$
应该可以。
([^\d:]+)
应该也可以。
然而,看起来你真的只是想做一个拆分。
"11111:111111:name".Split(':')[2]
可能是您最快的方法。
另一个正则表达式
string pattern = @"[^:]+";
var city = Regex.Match(text, pattern, RegexOptions.RightToLeft);
例如字符串看起来像
90001:21880004:los angeles
10001:21880005:new york
我想通过正则表达式提取最后的城市名称。我发现这两个很难做到 :
有人能指出我正确的方向吗?
你可能会使用像这样的正则表达式:
(\d+:)+([A-Za-z\s]+)
在哪里可以捕获编号组 (\d+:)+
然后文本 ([A-Za-z\s])
将捕获大多数城市的名称。
至少这是它的基本要点。
您可以使用 String.Split
string line = "90001:21880004:los angeles";
string cityName = line.Split(':')[2]; // Gives 'los angeles'
这会将字符串分成三部分(因为你有两个 :
s)并取第三部分(记住数组是从 0 开始的),其中包含你的城市名称。
请确保您的数据集中没有城市名称中包含 :
。
你可以在没有 Regex
的情况下实现这一点:
string la = "90001:21880004:los angeles".Split(':')[2];
string ny = "10001:21880005:new york".Split(':')[2];
如果您知道正好有 2 个冒号,您可以这样做:
\d:\d:([a-zA-Z\s]+)
通过不在正则表达式无法捕获的数字周围添加括号。
如果你真的想使用正则表达式:
^\d+:\d+:(.+)$
应该可以。
([^\d:]+)
应该也可以。
然而,看起来你真的只是想做一个拆分。
"11111:111111:name".Split(':')[2]
可能是您最快的方法。
另一个正则表达式
string pattern = @"[^:]+";
var city = Regex.Match(text, pattern, RegexOptions.RightToLeft);