【问题标题】:Regex any character except one word正则表达式除一个单词外的任何字符
【发布时间】:2013-01-09 09:37:22
【问题描述】:

如何为除一个单词以外的任何字符定义正则表达式组?

我知道已经问过几个类似的问题,但在复杂的正则表达式中找不到解决方法:

我的正则表达式看起来像这样:

...(?<Subfield7>.{1,16})(?<Subfield8>//.{1,16})?

Subfield7 应该匹配除两个正斜杠之外的任何内容,因为它们是下一个子字段的分隔符。

  • ...abcdefghijklmnop//abcdefghijklmnop -> 子字段 7:abcde...,子字段 8://abcde...
  • ...1.3,5-7 9/11//abcdefghijklmnop -> 子字段 7:1.3,5-7 9/11,子字段 8://abcde...
  • ...12345//abc//123//456 -> 子字段 7:12345,子字段 8://abc//123//456

编辑:
我的目标是识别子字段 7 和子字段 8。根据定义,子字段 8 以两个前导斜杠开头,但子字段 7 也可能包含(单个)斜杠。子字段 7 和 8 的长度是可变的。

【问题讨论】:

    标签: regex


    【解决方案1】:

    如果你想要任何没有// 的非空字符串,你可以使用

    "(?!.*//).{1,16}"
    

    这匹配 /a/ 而不匹配 //a//a//b

    这是你想要的吗?

    【讨论】:

    • 嗨。非常感谢。这在用作单个正则表达式时有效。但是当后面跟着下一个模式 ((?//.{1,16})?) 时,正则表达式会失败。这是因为根据定义,子字段 8 以两个斜杠开头。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-13
    相关资源
    最近更新 更多