如何找到正则表达式模式以找到代码并将其替换为空白

4ktjp1zp  于 2021-09-23  发布在  Java
关注(0)|答案(2)|浏览(273)

我有一个字符串,其中有可能的代码,我想替换为空白
范例-
输入= 9eac83a4-80f4-4a2e-b0fe-7a4a9329ff62Manual Handling.pdf 我想要的输出= Manual Handling.pdf 输入= 14a19827-8f33-4666-a3cc-ea257875f1f7Fire&Evac.pdf 我想要的输出= Fire&Evac.pdf 输入= 67a89d74-57a9-43cc-9576-001f9315d292BLS-1.pdf 我想要的输出= BLS-1.pdf 输入= 7622a004-43b8-4357-8c95-c8a269e6ef7827276e859ef10d-Mango Super.pdf 我想要的输出= Mango Super.pdf 输入= d5b0f745aa80d9- Calc.png 我想要的输出= Calc.png 输入= d5b0f745aa80d9980d090- Covid-19-Test.png 我想要的输出= Covid-19-Test.png 输入= d5b0f745aa80d9980d090-2a004-43b8-4357-8 Covid-19 Vacc.png 我想要的输出= Covid-19 Vacc.png 我该怎么做?
我试过这个正则表达式,但不适用于上面所有的情况

var str = "9eac83a4-80f4-4a2e-b0fe-7a4a9329ff62Manual Handling.pdf";
var cleanStr = str.replace(/[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}/g, "");

有人能帮我吗?

mfuanj7w

mfuanj7w1#

这将有助于:

.*?(?=[A-Z].*$)
``` `.*?` 松散地捕捉一切 `(?=[A-Z].*$)` -检查我前面是否有大写字母,后面是否有任何内容;不要捕捉到这一点

const data = 9eac83a4-80f4-4a2e-b0fe-7a4a9329ff62Manual Handling.pdf 14a19827-8f33-4666-a3cc-ea257875f1f7Fire&Evac.pdf 67a89d74-57a9-43cc-9576-001f9315d292BLS-1.pdf 7622a004-43b8-4357-8c95-c8a269e6ef7827276e859ef10d-Mango Super.pdf d5b0f745aa80d9- Calc.png d5b0f745aa80d9980d090- Covid-19-Test.png d5b0f745aa80d9980d090-2a004-43b8-4357-8 Covid-19 Vacc.png;

const pattern = /.?(?=[A-Z].$)/;
data.split(/\n/).forEach(e => console.log(e.replace(pattern, "")));

tzxcd3kk

tzxcd3kk2#

简单模式 /[a-f\d-]{14,} */ 适用于您的所有案例:

const data = `9eac83a4-80f4-4a2e-b0fe-7a4a9329ff62Manual Handling.pdf
14a19827-8f33-4666-a3cc-ea257875f1f7Fire&Evac.pdf
67a89d74-57a9-43cc-9576-001f9315d292BLS-1.pdf
7622a004-43b8-4357-8c95-c8a269e6ef7827276e859ef10d-Mango Super.pdf
d5b0f745aa80d9- Calc.png
d5b0f745aa80d9980d090- Covid-19-Test.png
d5b0f745aa80d9980d090-2a004-43b8-4357-8 Covid-19 Vacc.png`;

const pattern = /[a-f\d-]{14,} */;
data.split(/\n/).forEach(e => console.log(e.replace(pattern, "")));

如果这会给其他字符串带来误报,那么有必要对前缀id格式进行更明确的规范。

相关问题