我在F#中编写了一个md2html编译器,我想用**
和<b>
标签替换</b>
周围的文本。
e.g。
this is **bold**
将更改为this is <b>bold</b>
我正在尝试使用模式Regex.Replace
使用(\*\*).*?(\*\*)
方法完成此操作。因此,第一个捕获组将被<b>
替换,第二个捕获组将被</b>
替换。我想知道如何指定替换这些不同的捕获组&#34;而不是整个正则表达式匹配?
答案 0 :(得分:4)
只需使用此正则表达式:\*\*(.*?)\*\*
并将匹配项替换为<b>$1</b>
\*\*
字面上匹配**
。(
启动了一个捕获组。.*
只是匹配它不能获得的新内容。?
这会使.*
懒惰,因此它与其他粗体文字不匹配。)
结束捕获组。\*\*
字面上匹配**
。答案 1 :(得分:4)
你应该抓住你需要保留的东西。您需要匹配需要更换的内容。
使用\*\*(.*?)\*\*
模式和<b>$1</b>
替换。
如果您希望星号之间有换行符,请使用单行修饰符(?s)
:(?s)\*\*(.*?)\*\*
答案 2 :(得分:4)
最简单的方法是捕获内部组而不是周围的**
,然后在替换中使用它。
Regex.Replace("this is **bold**", "\*\*(.*?)\*\*", "<b>$1</b>")
Regex.Replace
不会替换已捕获的群组,而是取代整个匹配。