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