如果这是一个重复的问题,我道歉。我没有找到解决方案。
我想搜索空格包围的所有整数,并用空格替换它们。
StringBuilder sb = new StringBuilder(" 123 123 456 789 fdsa jkl xyz x5x 456 456 123 123");
StringBuilder sbDigits = new StringBuilder(Regex.Replace(sb.ToString()), @"\s[0-9]+\s", " ", RegexOptions.Compiled);
sbDigits
返回值是,“123 789 fdsa jkl xyz x5x 456 123”
我希望返回值为“fdsa jkl xyz x5x”
那么,发生了什么?我如何确保获得重复的号码?
答案 0 :(得分:0)
String fixed = Regex.Replace(originalString, "\\s*\\d+\\s+", "");
答案 1 :(得分:0)
尝试以下正则表达式:
StringBuilder sb = new StringBuilder(" 123 123 456 789 fdsa jkl xyz x5x 456 456 123 123");
StringBuilder sbDigits = new StringBuilder(Regex.Replace(sb.ToString(), @"\s*[0-9]+\d\s*", " ", RegexOptions.Compiled));
答案 2 :(得分:0)
您可以使用:
search: @"( [0-9]+)(?=\1\b)"
replace: ""
答案 3 :(得分:0)
这个怎么样:
测试字符串:
123 123 456 789 fdsa jkl xyz x5x 456 456 123 123 5x
正则表达式:
(?<=\s|^)[\d]+(?=\s|$)
工作示例:
C#:
StringBuilder sb = new StringBuilder(" 123 123 456 789 fdsa jkl xyz x5x 456 456 123 123 5x");
StringBuilder sbDigits = new StringBuilder(Regex.Replace(sb.ToString()), @"(?<=\s|^)[\d]+(?=\s|$)", " ", RegexOptions.Compiled);
返回值:
fdsa jkl xyz x5x 5x
答案 4 :(得分:0)
如果添加分词符(\b
),则只能捕获“数字单词”(这听起来像你想要的那样。并且你可以捕获数字周围的零个或多个空格而不匹配字母内的数字:
\s*\b\d+\b\s*
答案 5 :(得分:0)
我对Regex不太了解。但是可以用一点LINQ
来完成:
var str = "123 789 fdsa jkl xyz x5x 456 123";
var parts = str.Split().Where(x => !x.All(char.IsDigit));
var result = string.Join(" ", parts); // fdsa jkl xyz x5x
答案 6 :(得分:0)
看看当你应用你的正则表达式时会发生什么,它与空格,任意数量的数字和另一个空格相匹配:
"( 123 )123 456 789 fdsa jkl xyz x5x 456 456 123 123"
// regex engine matches " 123 ", first fitting pattern
"( 123 )123( 456 )789 fdsa jkl xyz x5x 456 456 123 123"
// regex engine matches " 456 ", because the first match "ate" the whitespace
"( 123 )123( 456 )789 fdsa jkl xyz x5x( 456 )456 123 123"
// matches the first " 456 "
"( 123 )123( 456 )789 fdsa jkl xyz x5x( 456 )456( 123 )123"
// matches " 123 "
"( 123 )123( 456 )789 fdsa jkl xyz x5x( 456 )456( 123 )123"
因此,正则表达式只找到" 123 "
," 456 "
," 456 "
和" 123 "
。你用空白替换了这些匹配,这就是导致输出的原因。
您希望将单词边界与不会“吃掉”单词边界(此处为空白)的内容进行匹配。正如许多其他人所建议的那样,
\b\d+\b
会做到这一点。