现有正则表达式允许单引号的新规则

本文关键字:新规则 规则 正则表达式 许单引 | 更新日期: 2023-09-27 17:59:53

我在这里问了另一个问题,但我仍然有问题。

我有一个表达式,它遵循一些规则:

  • 字符"必须是第一个和最后一个字符
  • "内可以有零个或多个空格
  • "内部可以有零或更多%
  • "中可以有零个或多个单词(字母和数字)表达式:

    (?i)^(?<q>['])[%'p{Zs}'p{L}'p{N}|()]*'k<q>$
    

现在,必须有另一条规则:

  • "对之间可以有零个或多个单词

示例:

'content1' this text should pass 'content2'

更新:

这里的诀窍是以下内容也应该通过:

' content ' text ' > pass
' ' content ' > pass

它会是什么样子?如果你知道任何关于正则表达式的好书,它对我也很有用

您可以使用|运算符将其添加到备选列表中:

^(?<q>')(?:'[^']*'|[%'p{Zs}'p{L}'p{N}|()])*'k<q>$

我删除了'周围的[],并将*量词放在备选列表中。此外,(?i)是多余的,因为正则表达式中没有文字字母。

这是regex演示

请注意,这个'content1' it won't pass 'content2'不会通过,但我想这是预期的行为。

更新

如果你只想让''...'之间,你可以把它添加到字符类:

^(?<q>')['%'p{Zs}'p{L}'p{N}|()]*'k<q>$

请参阅另一个演示(添加'r?是为了在多行模式中进行演示)

现有正则表达式允许单引号的新规则