我试图检测围绕它的*asterisks*
斜体字的出现次数。但是我想确保它不在链接中。所以应该找到" text"在here is some *text*
但不在http://google.com/hereissome*text*intheurl
内。
我的第一直觉是使用预测,但如果我使用像John Gruber这样的URL正则表达式,它似乎无法工作:
(?i)\b((?:[a-z][\w-]+:(?:/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))
让它在模式的开头向前看,然后是模式的其余部分。
(?=URLPATTERN)\*[a-zA-Z\s]\*
那我该怎么做呢?
答案 0 :(得分:1)
您可以使用此替换技术首先匹配要丢弃的LHS上的所有内容。然后在RHS上使用捕获的组来匹配所需的文本。
https?:\/\/\S*|(\*\S+\*)
然后,您可以使用捕获的组#1作为强调文本。
答案 1 :(得分:0)
以下正则表达式:
^(?!http://google.com/hereissome.*text.*intheurl).*
匹配http://google.com/hereissome*text*intheurl
以外的所有内容。这称为负向前瞻。一些正则表达式库可能不支持它,python的支持它。
以下是指向Mastering Lookahead and Lookbehind的链接。