【问题标题】:Regex with remove before and first after [duplicate]正则表达式在[重复]之前和之后首先删除
【发布时间】:2020-11-01 11:55:01
【问题描述】:

我有一个简单的例子如下

user=djdjdjjdjdjdj; user=jdjdjdjdjdj;

user=djdjdjjdjdjdj;user=jdjdjdjdjdj;

以上两个示例之间的空白差异。当我使用正则表达式分隔用户代码时,第一个示例就可以了。你能告诉我如何做得更好,这是我的正则表达式代码:

(?<=user=)([^\s]+)(?=;)

【问题讨论】:

  • 你的匹配标准是什么?结果需要什么?
  • 看看第一个正确的例子。但是输入的数据必须有空格,如果没有空格保持不变,我想要。
  • 还不清楚。看看:regex101.com/r/TC0GMU/1是你问的吗?
  • Seblor 下面纠正我的想法

标签: regex


【解决方案1】:

我会在这里使用:

(?<=user=)[^;]+

Demo

这将匹配输入中出现的每个user 值,无分号。如果您真的想使用捕获组,那么我建议您甚至不要使用lookbehind:

\buser=([^;]+)

这会将每个用户值放在第一个捕获组中。

【讨论】:

    【解决方案2】:

    如果你想匹配[^\s],但也需要空格,只需使用.

    所以您的正则表达式将是 (?&lt;=user=)(.+?)(?=;)(使用非贪婪量词匹配,直到下一个字符是 ;)。
    或者你可以匹配到第一个;,使用这个:(?&lt;=user=)([^;]+)

    【讨论】:

    • 非常感谢您的回答
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-17
    • 1970-01-01
    相关资源
    最近更新 更多