我希望有一种方法可以从字符串中捕捉岁月并将主题放在(
和)
之间,而且我在正则表达式中非常棒。例如
This is 2014 and the next year will be 2015
将是
This is (2014) and the next year will be (2015)
我正在使用\d{4}
捕获年份,但我不知道是否有可能将字符串发送到下一个参数?
下面的正则表达式将捕获输入字符串中的四位数字。在替换部分中,在捕获的数字之前和之后添加括号。
正则表达式:
(\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);
模式说明:
()
- Capturing groups.\b
- 它被称为单词边界。它匹配单词字符\w
和非单词字符\W
。\d{4}
-正好匹配四位数。\b
这将在打开/关闭括号中找到任何4位数字。如果年份数可以改变,我认为正则表达式是最好的方法。
相反,此代码将告诉您模式是否匹配
在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
用于字符串替换模式以指代整个匹配而不是任何捕获的子字符串。
试试这个
$&