我一直在尝试为我的问题构建一个正则表达式,如下所示:
我想在节点"上删除"的内容如果后面的单词在句子末尾
,那么直到我到达结尾为止e.g。
PAA-NID30054-30102V2001P7 PAA_PL_ALERT在节点上被清除 站点六百七十三万六千三百五十六分之五十三万二千三百三十二。
和
PAC-NID43453-435346547 PAA_PL_ALERT在节点siteground上清除。
我使用了以下正则表达式:
on node.*
但是,有些条目在节点上有#34;"在句子的中间,我不想删除句子的其余部分(我想保存连接不可用的内容)
e.g。
节点上的VNOC-IPX DRA报警re-dsad-a - DEASWQ01_01 - 连接 不可用。
使用思想:
on node.*-
然而,在节点"之后它不会清除"之后的字。对于第一个例子。
您是否建议使用开始和结束函数来确定匹配是否在字符串的末尾?即创建一个if子句并检查匹配是否在最终用途。否则使用 -
答案 0 :(得分:0)
您可以在正则表达式中使用行尾标记。也许试试这个:
on node [^\s]*$
| ||__ End of line
| |___ Any amount
|_______ Not a space character (space, tab, newline)
答案 1 :(得分:0)
我想在节点"上删除"的内容如果后面的单词在句子末尾
,那么直到我到达结尾为止
听起来你想删除"on node"
以及之后的下一部作品。
尝试以下方法:
r'on node \S+'
当然,它会出现问题
VNOC-IPX DRA Alarm on node re-dsad-a - DEASWQ01_01 - Connection Unavailable.
因为这是节点"之后的多个单词"。在这种情况下,您的规则过于随意,您想要删除并希望保留。
答案 2 :(得分:0)
如果您对其他方式持开放态度(不使用正则表达式),那么可能的天真解决方案可以使用str.split()
。
一般来说,它看起来像这样;
parts = line.split("on node") # you now have some parts to look at
# if 'on node' was found this will be > 1
if len(parts) > 1:
# additional logic to assess the second part of the string
if parts[1].lower().find("connection unavailable") >= 0:
# do something
# do something more