C#正则表达式,匹配但不包括匹配字符串之前的第一个字符

伊丹·谢克特(Idan Shechter)

如何使此C#正则表达式在匹配结果中不包含URL之前的第一个字符:

((?!\").)https?:\/\/twitter\.com\/(?:#!\/)?(\w+)\/status(?:es)?\/(\d+)

这将匹配:

Xhttps://twitter.com/oppomobileindia/status/798397636780953600

注意第一个X字母。

我希望它与不带双引号的URL匹配。对于不以双引号开头的URL,也不要在https之前添加第一个字符。

我在代码中使用的实际示例:

 var str = "<div id=\"content\">
             <p>https://twitter.com/oppomobileindia/status/798397636780953600</p>
             <p>\"https://twitter.com/oppomobileindia/status/11111111111111111111</p></div>";

 var pattern = @"(?<!""')https?://twitter\.com/(?:#!/)?(\w+)/status(?:es)?/(\d+)";//

var rgx = new Regex(pattern);

var results = rgx.Replace(str, "XXX");

在上面的示例中,仅第一个URL应该被替换,因为第二个URL之前有双引号。也应在完全匹配的情况下替换它,而在匹配字符串之前不能有第一个字母。

威克多·斯特里比尤(WiktorStribiżew)

(?<!")后面使用否定式:

var re = @"(?<!"")https?://twitter\.com/(?:#!/)?(\w+)/status(?:es)?/(\d+)";

(?<!")有不能是手段"紧接在当前位置之前。

在C#中,您不需要/在模式内部进行转义,因为在定义regex时不使用regex分隔符。

请注意C#语法:如果要"在逐字字符串文字内定义一个双字,请将该文字加倍。在常规字符串文字中,对"和进行转义\

var re = "(?<!\")https?://twitter\\.com/(?:#!/)?(\\w+)/status(?:es)?/(\\d+)";

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

正则表达式删除与第一个字符串匹配的行?

Python正则表达式-匹配某些第一个字符,但不匹配W

正则表达式匹配字符串中的最后一个字符 - C#

匹配正则表达式中的第一个字符?

正则表达式替换特定匹配项的字符串的第一个和最后一个字符

如何使用正则表达式判断字符串的第一个和最后一个字符是否匹配?

正则表达式匹配字符串的第一个和最后一个字符,但是为什么呢?

正则表达式模式匹配直到包含特定字符的第一个字符系列之前的第一个空格

基于熊猫/正则表达式的方法来匹配字符串列表中的第一个字符串

正则表达式PCRE:验证字符串以匹配第一个字符串集而不是最后一个字符串

C#正则表达式匹配排除第一个和最后一个字符

尝试匹配每个正则表达式匹配的第一个字符

Java-通过多行正则表达式匹配第一个字符串

C#:如果某些字符是使用正则表达式的字符串的第一个字符,则替换它们

正则表达式替换所有匹配项,但不替换第一个和最后一个字符

正则表达式仅检查字符串C#中的第一个字符

如何匹配正则表达式中的第一个字符串,然后在正则表达式中运行另一个递归模式?

Ansible,字符串第一个字符的正则表达式

R:从第一个字符到字符串末尾的正则表达式

正则表达式:如果匹配,则删除单词的第一个字符

正则表达式仅匹配第一个字符

忽略正则表达式匹配中的第一个字符

正则表达式只匹配第一个字符

第一个字符出现后的 Python 正则表达式匹配组

正则表达式匹配省略搜索中的第一个字符

正则表达式限制字符长度,但不匹配字符串的最后一个字符

使用正则表达式VB NET匹配并替换字符串中的第一个和最后一个字符以及子字符串

使用正则表达式替换匹配字符串的最后一个字符

正则表达式匹配字符串中的最后一个字符