如有任何帮助,我们将不胜感激。我写了一个正则表达式,它在某些边缘情况下会失败。不确定是否有办法解决这个问题。我正在尝试提取具有1.1和1.2等的值。我使用的正则表达式是"[1-9].[1-9]([^s]+)"
如果我使用它,它会提取前三个值,但4.1有空格,只提取一部分。如果我使用"[1-9].1.*[(XDX)]$"
它开始捕获整条线。
目前,我已经编写了一个逻辑,检查MR,将其拆分并放入数组,这是一种非常低效的方法
如果你能想出比这个更好的解决方案,请告诉我。
GIBBERISH
1.1CDDAX/SXEVEN MR*XDX 2.1CDDAX/JEROME MR*XDX
3.1CDDAX/SIXM MR*XDX 4.1CDDAX AMX/SIXM MR*XDX
1 OXP EY 31SED W PK3 MEL/REDOOK DEOPRE 31SED21 XO XRXVEL DEF
EXPRESSA VERO IN IIS AETATIBUS, QUAE IAM CONFIRMATAE SUNT. ATQUI
PERSPICUUM EST HOMINEM E CORPORE ANIMOQUE CONSTARE,
CUM PRIMAE SINT ANIMI PARTES, SECUNDAE CORPORIS. TUM QUINTUS:
EST PLANE, PISO, UT DICIS, INQUIT. BONA AUTEM CORPORIS HUIC SUNT,
QUOD POSTERIUS POSUI, SIMILIORA. ILLA TAMEN SIMPLICIA
您可以使用
(?<!S)[1-9].[1-9](.*?)(?=s+MR*XDX|$)
或者,
(?<!S)[1-9].[1-9]((?:(?!s+MR*XDX).)+)
查看此regex#1演示或regex#2演示
详细信息
(?<!S)
-空白应该正好位于字符串的当前位置或开头[1-9].[1-9]
-从1
到9
的数字,然后是.
,然后是从1
到9
的数字(.*?)
-捕获组1:除换行字符外的任何0+个字符,尽可能少(?=s+MR*XDX|$)
-.*?
将在第一次出现之前停止匹配s+MR*XDX
-1+空白,然后是MR*XDX
子字符串|
-或$
—字符串结束