我尝试使用记事本++更改文件中的某些行,而且我对正则表达式的知识非常少,从而寻求帮助。 任何形式的帮助都是值得的。
找到所有看起来像 See ABC'D EFG;IJKL;FOO;BAR;XXXXson on.
"See"
单词可以有特殊字符
a)空间
b) '
(萎缩)
c) ,
(逗号)
d) -
(hiphen)
完整结束 .
将这些行替换为:
See:["ABC'D EFG","IJKL","FOO","BAR",....]
答案 0 :(得分:0)
找到什么:See ([A-Z'\-, ]+)\;([A-Z'\-, ]+)\.
替换为:See:["\1", "\2"]
见https://regex101.com/r/bfJkN6/3
还在我的记事本++上测试过,见:[“ABC'D EFG”,“IJKL”]
我更新了正则表达式以捕获https://regex101.com/r/bfJkN6/5上的多次点击
See ((([A-Z'\-, ]+)\;)+)([A-Z'\-, ]+)\.
答案 1 :(得分:0)
使用与任何非单词字符匹配的 \W
示例https://regex101.com/r/lFANF0/4
查找 See\s([A-Z' ]+)\W(\w+)\.
和替换 See:["$1","$2"]
强>
1stGroup
(\w+\'\w+\s+)
\w+
匹配任何字词(等于[a-zA-Z0-9_]
)
+
在一次和无限次之间匹配\s+
匹配任何空格字符(等于[\r\n\t\f\v ]
)
第二组(\w+\W*\w+)
\W*
匹配任何非字字符(等于[^a-zA-Z0-9_]
)
答案 2 :(得分:0)
让我们说分号的数量是可变的。你需要两次通过
使用Replace All
进行两次传递:
找到:^See \K([A-Z ,;'-]+)\.
替换:["$1"]
然后:
找到:(?:\G(?!^)|^See \["(?=[^"]*"]))[^";]*\K;
替换:", "
第一遍很容易理解,它只找到相应的行,删除最后一个点,并用双引号和方括号之间的大写字母,逗号,空格,分号,撇号和连字符括起部分。
第二遍需要仅替换引号内的分号和方括号内的以See
开头的行。为此,我使用第二个分支^See \["(?=[^"]*"])
到达有趣的行和第二个分支中的\G
锚点,以确保下一个匹配与第一个匹配。由于[^";]*
排除了双引号,一旦到达最后一个分号,第一个分支就不能再成功,连续性就会被破坏。