c#Regex - 只在一个字符串中获取数字和空格,在另一个字符串中只获取文本和空格

时间:2018-01-29 08:29:29

标签: c# regex

我如何只获取数字并在一个字符串中包含空格,而在另一个字符串中只包含文本和空格?

我试过这个:

string value1 = "123 45 New York";
string result1 = Regex.Match(value1, @"^[\w\s]*$").Value;

string value2 = "123 45 New York";
string result2 = Regex.Match(value2, @"^[\w\s]*$").Value;

result1需要为“123 45”

result2需要是“纽约”

2 个答案:

答案 0 :(得分:1)

尝试下一个代码:

        string value1 = "123 45 New York";
        string digitsAndSpaces = Regex.Match(value1, @"([0-9 ]+)").Value;

        string value2 = "123 45 New York";
        string lettersAndSpaces = Regex.Match(value2, @"([A-Za-z ])+([A-Za-z ]+)").Value;

更新

  

如何从值2中获得像åäö这样的字符?

        string value3 = "å ä ö";
        string speclettersAndSpaces = Regex.Match(value3, @"([a-zÀ-ÿ ])+([a-zÀ-ÿ ]+)").Value;

答案 1 :(得分:1)

快速正则表达式只允许它们之间的数字和空格,字符也一样。

正则表达式(?:\d[0-9 ]*\d)|(?:[A-Za-z][A-Za-z ]*[A-Za-z])

<强>详情:

  • (?:)非捕获组
  • \d匹配一个数字(等于[0-9]
  • []匹配列表中的单个字符
  • *零和无限次之间的匹配
  • |

<强>输出

Match 1
Full match  0-6     `123 45`

Match 2
Full match  7-15    `New York`

Regex demo