如果字符串中有 - 或〜或=或任何特殊字符,我会使此正则表达式中断。基本上,我想删除第一个字母(这是一个)并删除最后一个下划线后的所有内容。 (RegEx必须是一个班轮)例如,Tester链接http://regexstorm.net/tester?p=%28%3f%3c%3da%29%5b%5cw+%5d%2b%28%3f%3d_%29&i=aPersonal+Protective+Equipment_REV2.docx%0d%0aaFreight+Forwarder+Standard+Operating+Procedure+-++Armenia_REV1.docx&o=i
(?<=a)[\w ]+(?=_)
aPersonal Protective Equipment_REV2.docx - 适用于此字符串(结果为个人防护装备)
但是跟随字符串失败了 aFreight Forwarder标准操作程序 - Armenia_REV1.docx(结果是rmenia)
答案 0 :(得分:0)
将模式更改为此似乎可以解决短划线的问题:
alter table users
add constraint unq_users_name_client unique (name, client);
我的测试用例:
aPersonal Protective Equipment_REV2.docx
aFreight Forwarder标准操作程序 - Armenia_REV1.docx
aFreight Forwarder ~~标准操作=程序 - Armenia_REV1.docx
(?<=a)[\w\-=~ ]+(?=_)
匹配单词。破折号是一个单词边界..为了保留它,你必须匹配它。
您可以考虑
\w
代替。如果您要一次匹配多个项目,则需要使用多行模式 这个将匹配第一个字符和最后一个下划线之间的任何字符。
答案 1 :(得分:-1)
(^.*?(?=a)a)|_[^_]*$
上面的RegEx工作(替换和忽略案例)
asomefile_(rw_340-v4) follow up by_ver2.xlsx
结果:somefile_(rw_340-v4) follow up by