RegEx:用HTML将Twitter名称链接到Twitter
我想做的只是稍微复杂一点: 比如说,我有一个HTML输入:RegEx:用HTML将Twitter名称链接到Twitter,html,regex,twitter,Html,Regex,Twitter,我想做的只是稍微复杂一点: 比如说,我有一个HTML输入: <a href="http://www.example.com" title="Bla @test blubb">Don't break!</a> Some Twitter Users: @codinghorror, @spolsky, @jarrod_dixon and @blam4c. You can't reach me at blam4c@example.com. 一些推特用户:@Codinghoro
<a href="http://www.example.com" title="Bla @test blubb">Don't break!</a>
Some Twitter Users: @codinghorror, @spolsky, @jarrod_dixon and @blam4c.
You can't reach me at blam4c@example.com.
一些推特用户:@Codinghoror、@spolsky、@jarrod_dixon和@blam4c。
你一点也联系不到我blam4c@example.com.
是否有一个好的正则表达式来替换twitter用户名中提到的twitter链接,但保留@example(底部的电子邮件地址)和@test(在链接标题中,即HTML标记中)
它可能还应该尝试不在现有链接中添加链接,即不破坏以下内容:
<a href="http://www.example.com">Hello @someone there!</a>
我当前的尝试是在字符串开头添加“>”,然后使用以下正则表达式:
Search: '/>([^<]*\s)\@([a-z0-9_]+)([\s,.!?])/i'
Replace: '>\1<a href="http://twitter.com/\2">@\2</a>\3'
搜索:'/>([^\1\3'
然后删除我在步骤1中添加的“>”
但是除了“@blamb4C”这个词,它什么都配不上。我知道它为什么会这样,这不是问题所在
我想找到一个解决方案,在不破坏HTML的情况下查找并替换所有twitter用户名。也许在不使用正则表达式的情况下编写此代码更好?首先,将尖括号放在正则表达式之外
使用HTML解析器和XPath选择您感兴趣的文本节点,然后考虑一个ReGEXP,只匹配那些节点中的“REFs”。
我会让其他人尝试对regex部分给出具体的答案。首先,将尖括号放在regexp之外
使用HTML解析器和XPath选择您感兴趣的文本节点,然后考虑一个ReGEXP,只匹配那些节点中的“REFs”。
我会让其他人尝试对regex部分给出具体的答案。我同意ddaa,如果不先剥离html链接,几乎没有明智的方法来解决这个问题 大概你会从一条真实的Twitter消息开始,根据定义,它不能包含任何手动输入的超链接 例如,下面是我如何发现这个问题的(链接解决了这个问题,所以不用麻烦点击它!) 一些推特用户:@Codinghoror、@spolsky、@jarrod_dixon和@blam4c 在这种情况下,很容易:
var msg = "Some Twitter Users: @codinghorror, @spolsky, @jarrod_dixon and @blam4c. http://bit.ly/2phvZ1";
var html = Regex.Replace(msg, "(?<!\w)(@(\w+))",
"<a href=\"http://twitter.com/$2\">$1</a>");
var msg=“一些Twitter用户:@codinghorror、@spolsky、@jarrod_dixon和@blamm4c。http://bit.ly/2phvZ1";
var html=Regex.Replace(msg,“(?我同意ddaa,如果不先剥离html链接,几乎没有明智的方法来解决这个问题
大概你会从一条真实的Twitter消息开始,根据定义,它不能包含任何手动输入的超链接
例如,下面是我如何发现这个问题的(链接解决了这个问题,所以不用麻烦点击它!)
一些推特用户:@Codinghoror、@spolsky、@jarrod_dixon和@blam4c
在这种情况下,很容易:
var msg = "Some Twitter Users: @codinghorror, @spolsky, @jarrod_dixon and @blam4c. http://bit.ly/2phvZ1";
var html = Regex.Replace(msg, "(?<!\w)(@(\w+))",
"<a href=\"http://twitter.com/$2\">$1</a>");
var msg=“一些Twitter用户:@codinghorror、@spolsky、@jarrod_dixon和@blamm4c。http://bit.ly/2phvZ1";
var html=Regex.Replace(msg,“(?此regexp可能工作得更好:/\B\@([\w\-]+)/gim
下面是一个JSFIDLE实例:这个regexp可能工作得更好一些:/\B\@([\w\-]+)/gim
下面是一个JSFIDLE的实际例子:我担心你会这样说,因为这是我得出的相同结果;)我担心你会这样说,因为这是我得出的相同结果;)