小编Ben*_*enH的帖子

前瞻数据不存在时的正则表达式正向前瞻 (PCRE)

我正在尝试匹配一个格式类似于以下的字符串:

username=joe password='this! is a password with "quotes" and spaces#913 custom1 customd afd weirdhuh? custom1=myvalue
Run Code Online (Sandbox Code Playgroud)

为了更详细地解释,这是一个由等号分隔的变量列表。可以传递的有效变量是:用户名、密码和 customX(其中 X 是任意数量的数字)。

我特别想匹配密码字段,因为从技术上讲,传递的变量可以有任意数量的引号、空格等,这些都是有效字符。我决定用于确定密码字符串何时终止的最佳“断点”是“customX=”字符串的存在,它推断下一个变量正在开始。

因此,在上面的例子中,实际的密码是:

'this! is a password with "quotes" and spaces#913 custom1 customd afd weird huh?
Run Code Online (Sandbox Code Playgroud)

我已经到达以下正则表达式:

(?i)password(?-i)=.+?(?= (?i)custom(?-i)\d+=)
Run Code Online (Sandbox Code Playgroud)

这似乎与以下内容相符:

password='this! is a password with "quotes" and spaces#913 custom1 customd afd weird huh?
Run Code Online (Sandbox Code Playgroud)

这实际上是我想要的(我可以轻松解析出“password=”),但问题是这个正则表达式似乎只有在字符串末尾存在最终的“custom1=myvalue”时才有效。如果将其删除,则根本没有匹配项。

无论最终值是否存在,我都需要能够匹配密码字符串。

如果您可以去掉“密码=”以仅获得实际密码,则可以获得奖励积分。

regex

5
推荐指数
1
解决办法
353
查看次数

标签 统计

regex ×1