我需要找到打破特定降价解析器的糟糕形成的降价。我正在寻找一个RegEx,它会找到**bold text**
在星号之前或之后用空格填充错误的情况。例如,** this is wrong**
和**this is also **
与** this one too **
一样,但**this is correct**
。当然,线条通常可以包含两者。例如,以下是一些测试用例:
This line is **correct** and **properly marked down**.
But this line **is not** because ** the second bold is wrong**.
** Also** this line is wrong **even though this is right**.
我已经尝试了(?:\*\*[^\*]*\s\*\*)
,但实际上它捕获了之间的部分(未包含在星号中的部分)。有什么建议吗?
答案 0 :(得分:2)
希望这会有所帮助,我们正在使用可能**spaces words spaces**
,**words spaces**
和**spaces words**
正则表达式: (?<=\s|^)(?:\*\*)(\s+([^\*]+)\s+|\s+([^\*]+)|([^\*]+)\s+)(?:\*\*)
1。
(?<=\s|^)
正面看空格或开始字符串2。
(?:\*\*)
匹配**
3。
(\s+([^\*]+)\s+
这将匹配space
然后somewords
然后space
4.
\s+([^\*]+)
匹配spaces
,然后全部匹配*
(不包括*
)5.
([^\*]+)\s+)
匹配某些字然后spaces
6。
(?:\*\*)
匹配**
答案 1 :(得分:1)
试试这个:
(?:\*\*\S.+?\S\*\*|(\*\*(?:\s.+?|.+?\s)\*\*))
说明:
// Line must contain: (?:\*\*\S.+?\S\*\*| // Correctly formatted block OR ( // block with BAD formatting - space \*\*(?:\s.+?| // to the left of formatting OR .+?\s)\*\* // to the right of formatting ) )
答案 2 :(得分:0)
这是您需要的javascript友好模式:
^[^*]*(?:\*{2}[^ ][^*]*[^ ]\*{2}[^*\n]*)*(\*{2}(?: [^*]+|[^*]+ )\*{2}).*$
解释(偶然):
^[^*]* # match anything preceding the first *
(?:\*{2}[^ ][^*]*[^ ]\*{2}[^*\n]*)* # match zero or more valid sets of **'s, so we don't lose track of what is an opener/closer
(?:\*{2}(?: [^*]+|[^*]+ )\*{2}) # REQUIRE just one invalid ** set
.*$ # after one invalid set is found, it doesn't matter what trails it before end of line