我可以在一个正则表达式字符串中使用正则表达式提取值吗



如有任何帮助,我们将不胜感激。我写了一个正则表达式,它在某些边缘情况下会失败。不确定是否有办法解决这个问题。我正在尝试提取具有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]-从19的数字,然后是.,然后是从19的数字
  • (.*?)-捕获组1:除换行字符外的任何0+个字符,尽可能少
  • (?=s+MR*XDX|$)-.*?将在第一次出现之前停止匹配
    • s+MR*XDX-1+空白,然后是MR*XDX子字符串
    • |-或
    • $—字符串结束

最新更新