【发布时间】:2018-03-20 12:14:54
【问题描述】:
我使用正则表达式将数据分组。这些线条看起来有点像:
testword test
test testword
tes.w. tes.
tes tes.w.
tes.w othertexttobefound
sometexttobefound testword somemoretextwhichdoesnotmatter
test 这个词与othertexttobefound 和sometexttobefound 一样被发现。
现在我试图告诉我的解析器,它应该在搜索时直接忽略testword 及其派生词,并专注于我的其余数据条目。 “好词”和“坏词”可以在每一行的任何位置。
我已经尝试过[^w],它适用于字符串的开头,但在我的版本中不适用于其他情况。 (?:w) 也没有成功。我不能使用环视,因为它们会阻止检测到整条线。
在互联网上经过长时间的搜索后,我希望在这里得到帮助!
在得到 Naxos84 的大力帮助后,我添加了一些德国现实生活中的例子:
sozialabgabe sozialarbeiter
soz.abg. sozialarbeiter
sozarbeiter soz.abg.
sozialarbeiter otherirrelevantstuff
otherirrelevantstuff soz abg
otherirrelevantstuff sozabg
otherirrelevantstuff sozialabgabe
如果我搜索:
sozial["^\ab"]|soz["^\ab"]|sometexttobefound|othertexttobefound
第 6 行和第 7 行也被标记,但我不想要这些。
我做错了什么?
链接: regexr
【问题讨论】:
-
您说的是 Perl 程序还是 PCRE Perl 正则表达式引擎?
-
要匹配整个单词,请使用
\b作为单词边界。示例:/\btest\b/将匹配“test”,但不匹配“testword”或“wordtest”或“wordtestword”。单词边界可能出现在行首和行尾。 -
@simbabque,没有“PCRE Perl 正则表达式引擎”这样的东西。我认为您的意思是“PCRE 正则表达式引擎”。
-
@ikegami 我做到了。不知道那个多余的词是从哪里来的。
-
我在 SAS 中使用正则表达式。我只知道它似乎是基于 Perl 的,但细节是我无法企及的。