【发布时间】:2019-05-24 18:34:34
【问题描述】:
我正在尝试从文本中标记和替换不以 # 开头的单词。文本文件如下所示:
Some words #word #anotherword #etc
Some more words #words #anotherword #etc #etc more words here
No words containing that character in this line
Etc
应该匹配什么:
Some words
Some more words more words here
No words containing that character in this line
Etc
我对正则表达式完全陌生,并且一直在尝试提出正确的代码。我得到的最接近的是标记除#之外的所有文本,而不是附加到它的单词。 # 后面的部分不应该被选中。注意:特殊字符和数字也存在,需要标记,但#后面的不能。我如何以最简单的方式完成此任务?
【问题讨论】:
-
我怀疑你想删除除匹配项之外的所有文本,对吧?然后使用
(#\S+)|(?s).(或\B(#\S+)|(?s).)并替换为(?1$1\n) -
(?<!#)\b\w+匹配前面没有#的单词,这是你想要的吗? -
@Wiktor Stribiżew:不幸的是,这两个代码都选择了整个文本。
-
什么意思?分享上述文本的预期输出
-
@Toto - 它有效!但由于某种原因,特殊字符不匹配。例如: - 一些词。 “-”不匹配。