markdown emph正则表达式匹配

markdown emph regex match

原始字符串:

These * should * not \*be\* selected. This* neither! *should be. This *neither should\* be* *this should* and*This*

预计:

These * should * not *be* selected. This* neither! *should be. This *neither should* be* <em>this should</em> ~~and<em>This</em>~~

旧正则表达式:

"(^|[\W_])(?:(?!\1)|(?=^))(\*|_)(?=\S)((?:(?!\2).)*?\S)\2(?!\2)(?=[\W_]|$)"

旧的不足以应对这种情况

有人可以帮忙吗? swift 正则表达式

在使用正则表达式解析降价时,您应该小心使用正则表达式方法,因为您的数据可能具有转义序列。这意味着,你不能只使用环视来匹配前面没有反斜杠的东西。你可以尝试用正则表达式做的是将降价之前的转义序列匹配到一组中,并将降价部分匹配到另一组中。

"(?u)(\\.)|(\*\b(?:(?!\\[*]).)*?\b\*)"

参见this regex demo。在代码中,您需要根据您的规范以不同方式处理这两个组。

图案详情:

  • (?u) - 使模式中的单词边界识别 Unicode
  • (\\.) - 第 1 组 - 转义序列
  • | - 或
  • (\*\b(?:(?!\\[*]).)*?\b\*) - 第 2 组匹配
    • \*\b - * 后跟单词 char
    • (?:(?!\\[*]).)*? - 任何不是 \* 序列起始字符的字符,尽可能少
    • \b\* - 前面有单词 char
    • *

更好的选择是自定义解析代码