我是正则表达式的新手。我已经写了这个表达式在File Renamer(JS)中使用,所以我可以按姓氏排列文件(它们以firstname开头,不能更改),它放置一个“!”在姓氏以其设置的字母开头的所有文件的前面(在这个例子中为“A”),然后可以将它们移动到单独的文件夹中。除了几个产生误报的术语外,它的作用是完美的,即:“和”“带”“Jr”“Sn”“II”“III”“IV”。我无法找到让它忽略这些术语的方法,是否可能?
(^[\w\.\s]+\bA[\w]+(,|\s-|\s&))
!$1
[1]:http://regex101.com/r/qU4yJ6/4 [见此链接] [1]
它必须与任何这些术语之前的第一个姓氏(最后一个单词)匹配“ - ”“&” “,”“和”“与”“Jr”“Sn”“II”“III”“IV”
--------------- MATCH -------------------
John Albert - Work00 - october.txt
Fred Allen - blah 01 - Whatever.txt
B. B. Archer - blah.txt
John M. Aines - Abcdef - {12345}.txt
A Arthur - abcdef.txt
Alex Abbott & Jane Doe - details.txt
D.C. Atkins, John Smith - Zxy123.txt
B. A. Arnold Jr, - (or Sn,) - def01.txt
Paul Adams III - (or II or IV).txt
Dave Ahern with Jo Short - [00].txt
-----------不要匹配-------------
J Anthony Jones - yawn - zzzz.txt
Rand Sony et al - title.txt
AA Smith - lalala.txt
A.A. Bloggs - info00 - November.txt
A A Bilner - testing1234.txt
A. Lebert - Anything - October.txt
A Doe - etc - etc.txt
A & A Dell - Defghi.txt
A and A Bell - asdfghjkl.txt
答案 0 :(得分:1)
答案 1 :(得分:0)
您应该可以选择一个可选的交流发电机选择器(x | y | z)吗?在那个中间拿起你列出的那些词。
这只有足够的条款来做你的例子,但它是一个开始:
(^[\w\.\s]+\bA[\w]+(\s(Jr|III|with[^-]*))?(,|\s-\s.|\s&))
我在regex101样本上尝试了它并且它有效。
编辑:
当遇到第一个字母与交流发电机选择器匹配的处理姓氏时,你可以做一个负面的预测,以确保你不匹配错误的东西。除了在某些情况下交换单个匹配字母外,您还需要自定义每个字母的快递。
在您的示例数据中,对于J,您不希望匹配:
B. A. Arnold Jr, - abc - def01.txt
Dave Ahern with Jo Short - [00].txt.
但想要匹配:
J Anthony Jones - yawn - zzzz.txt
使用否定前瞻将让您处理Js。 J|Jr Example
(^[\w\.\s]+\bJ(?!r,)[\w]+(\s(Jr|III|with[^-]*))?(,|\s-\s.|\s&))
这可能更复杂,因此值得尝试用这样一行正则表达式来完成。