如何在Regex.Replace()中获得匹配? [重复]

问题描述 投票:-1回答:4

这个问题在这里已有答案:

我希望有一种方法可以从字符串中捕捉岁月并将主题放在()之间,而且我在正则表达式中非常棒。例如

This is 2014 and the next year will be 2015

将是

This is (2014) and the next year will be (2015)

我正在使用\d{4}捕获年份,但我不知道是否有可能将字符串发送到下一个参数?

c# .net regex
4个回答
3
投票

下面的正则表达式将捕获输入字符串中的四位数字。在替换部分中,在捕获的数字之前和之后添加括号。

正则表达式:

(\b\d{4}\b)

替换字符串:

($1)

码:

string str = "This is 2014 and the next year will be 2015";
string result = Regex.Replace(str, @"(\b\d{4}\b)", "($1)");
Console.WriteLine(result);

IDEONE

模式说明:

  • () - Capturing groups.
  • \b - 它被称为单词边界。它匹配单词字符\w和非单词字符\W
  • \d{4}-正好匹配四位数。
  • qazxsw poi - 单词字符和非单词字符之间的匹配。

1
投票
\b

这将在打开/关闭括号中找到任何4位数字。如果年份数可以改变,我认为正则表达式是最好的方法。

相反,此代码将告诉您模式是否匹配


1
投票

在C#中,你会这样做:

string pattern = @"\(\d{4}\)";
string result = Regex.Replace(str, pattern , "($1)");

但是,根据您的模式,这将匹配4位长的所有数值。

注意

Input: "This is 2014 and the next year will be 2015" Pattern: "\d{4}" Replacement: "($0)" $0用于字符串替换模式以指代整个匹配而不是任何捕获的子字符串。


0
投票

试试这个

$&
© www.soinside.com 2019 - 2024. All rights reserved.