如何在F#中为不同的捕获组指定正则表达式替换

Som*_*ruh 5 regex f#

我正在用F#编写一个md2html编译器,我想**用<b>和</b>标签替换周围的文本.

例如 this is **bold**将改为this is <b>bold</b>

我试图Regex.Replace使用模式的方法来实现这一点(\*\*).*?(\*\*).所以第一个捕获组将被替换,<b>第二个捕获组将被替换为</b>我想知道如何指定替换这些不同的"捕获组"而不是整个正则表达式匹配?

Dav*_*vіd 5

只需使用此正则表达式:\*\*(.*?)\*\*并将匹配项替换为<b>$1</b>

解释:

  • \*\*从字面上匹配**。
  • (启动一个捕获组。
  • .*只是匹配它能得到的不是新行的所有内容。
  • ?这使得.*懒惰,因此它不匹配其他粗体文本。
  • )结束捕获组。
  • \*\*从字面上匹配**。


Wik*_*żew 4

你应该捕捉你需要保留的东西。您只需匹配需要替换的内容即可。

使用\*\*(.*?)\*\*模式和<b>$1</b>替换。

如果您希望星号之间出现换行符,请使用单行修饰符(?s): (?s)\*\*(.*?)\*\*