我试图隔离某一行的特定部分,并删除其后的所有内容。
下面是一些示例字符串,显示了文件的一般格式。我试图隔离这些行中的每一行,并删除 Collection-ID.Package-name 并删除。(版本)
DGL1PLAN_PUT_PFC.FCA#FKS.(CAD17_2013-01-30-21.35.29)
DSN8CC91.DSN8CLTC.(2015-01-14-16.33.06.616783)
DSNAOCLI.DSNCLICS.(UQ40167)
DSNJAR.DSNX9DIJ.(UK81051)
进入:
DGL1PLAN_PUT_PFC.FCA#FKS
DSN8CC91.DSN8CLTC
DSNAOCLI.DSNCLICS
DSNJAR.DSNX9DIJ
我还没有想出如何删除这些行,但我已经想出了(我认为)如何将它们单独隔离。我目前使用它^.*(?=..(CAD))
来突出显示.()
行之前的所有内容。我正在学习正则表达式,据我所知,谷歌搜索:
^
是字符串的开头
.
查找除换行符之外的任何字符
*
查找 0 个或更多前一个类型
(
开始搜索
?=
是正向前瞻
..(CAD)
是我用来突出显示要隔离的字符串的
)
搜索词结束搜索
我不确定如何删除多余的部分,但已设法突出显示我想保留的部分。
这是我到目前为止已经弄清楚的图片:
答案1
使用这个正则表达式:
\.\(.*
并将其替换为无(空白)。
解释:
\.\(
- 匹配.
并且(
彼此相邻.*
- 以贪婪的方式匹配这些之后的所有内容,以尽可能多地匹配。请记住,. matches newline
需要关闭该选项,否则它将匹配多行。
这比其他答案简单一些,因为它的作用相反——它删除了冗余部分,而保留了开头的部分。
答案2
您可以使用正则表达式:^(.*)\.\(CAD.*\)
并在替换字段中输入$1
。这将搜索字符串,然后是(CAD
,然后是任何符号和)
。并且仅打印第一组(在点和开括号之前)
如果您希望其他行也使用相同的操作,请使用正则表达式:^(.*)\.\(.*\)
下面演示了它的工作原理:https://regex101.com/r/wWC24q/1