我希望有一种方法可以捕捉字符串中的年份,并将主题放在(
和)
之间,而我在正则表达式中非常棒。例如
This is 2014 and the next year will be 2015
将会是
This is (2014) and the next year will be (2015)
我使用\d{4}
来捕获年份,但我不知道是否可以将字符串发送到下一个参数?
答案 0 :(得分: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);
模式说明:
()
- Capturing groups. \b
- 它被称为字边界。它匹配单词字符\w
和非单词字符\W
。\d{4}
- 正好匹配四位数字。\b
- 单词字符和非单词字符之间的匹配。答案 1 :(得分:1)
在C#中,您可以这样做:
Input: "This is 2014 and the next year will be 2015"
Pattern: "\d{4}"
Replacement: "($0)"
但是根据您的模式,这将匹配4位数的所有数值。
注意强>
字符串替换模式中使用$0
或$&
来指代整个匹配而不是任何捕获的子字符串。
答案 2 :(得分:1)
string pattern = @"\(\d{4}\)";
string result = Regex.Replace(str, pattern , "($1)");
这将在打开/关闭括号中找到任何4位数字。 如果年份数可以改变,我认为正则表达式是最好的方法。
相反,此代码会告诉您模式是否匹配
答案 3 :(得分:0)
试试这个
"This is 2014 and the next year will be 2015".replace(/(\d{4})/gi, '($1)');