正则表达式只保留主题标签
Regex to only keep hashtags
使用正则表达式,我试图只在文本中保留主题标签。我正在尝试匹配其他所有内容并替换为不重要的组。但也许有更聪明的方法。
示例文本:
This is a #text, which is #full of #hashtags.
Well, this is not #easy to
#extract #them.
I think I #start to lose: #hope.
我最好的尝试:([\s\.\,]|^)[^#]\w+([\s\.\,]*?|$)
替换为 </code> returns</p>
<pre><code> a #text #full #hashtags #easy
#extract #them. I #start: #hope.
预期结果应该有 4 行,如示例所示。空格也可以留。
理想的期望结果:
#text #full #hashtags
#easy
#extract #them
#start #hope
这个很不错,也很容易理解,并且和你的有相同的替代品:
[^#]*?(#\w+)
它只会吃掉尽可能多的字符,直到遇到 #
,然后将所有正常的单词字符捕获到组中,并重复。
如果您不介意保留前导 space(之后可能 trim),您可以在替换和匹配中使用第 1 组:
.*?(\s*#\w+)|.+
模式匹配:
.*?
尽可能匹配除换行符外的任何聊天内容
(\s*#\w+)
在组 1 中捕获匹配的可选白色 space 字符,然后是 #
和 1+ 个单词字符
|
或
.+
匹配除换行符以外的任何字符 1 次以上
如果您不想保留前导 space 但不介意尾随 space,您可以在替换中使用第 1 组后跟 space并匹配:
.*?(#\w+)|.+
使用正则表达式,我试图只在文本中保留主题标签。我正在尝试匹配其他所有内容并替换为不重要的组。但也许有更聪明的方法。
示例文本:
This is a #text, which is #full of #hashtags.
Well, this is not #easy to
#extract #them.
I think I #start to lose: #hope.
我最好的尝试:([\s\.\,]|^)[^#]\w+([\s\.\,]*?|$)
替换为 </code> returns</p>
<pre><code> a #text #full #hashtags #easy
#extract #them. I #start: #hope.
预期结果应该有 4 行,如示例所示。空格也可以留。
理想的期望结果:
#text #full #hashtags
#easy
#extract #them
#start #hope
这个很不错,也很容易理解,并且和你的有相同的替代品:
[^#]*?(#\w+)
它只会吃掉尽可能多的字符,直到遇到 #
,然后将所有正常的单词字符捕获到组中,并重复。
如果您不介意保留前导 space(之后可能 trim),您可以在替换和匹配中使用第 1 组:
.*?(\s*#\w+)|.+
模式匹配:
.*?
尽可能匹配除换行符外的任何聊天内容(\s*#\w+)
在组 1 中捕获匹配的可选白色 space 字符,然后是#
和 1+ 个单词字符|
或.+
匹配除换行符以外的任何字符 1 次以上
如果您不想保留前导 space 但不介意尾随 space,您可以在替换中使用第 1 组后跟 space并匹配:
.*?(#\w+)|.+