我问another question here,但我仍然遇到问题。
我的表达式遵循一些规则:
''内可以有零个或多个单词(字母和数字) 表达:
(?i)^(?<q>['])[%\p{Zs}\p{L}\p{N}|()]*\k<q>$
现在,必须有另一条规则:
示例:
'content1' this text should pass 'content2'
更新
这里的诀窍是以下内容也应该通过:
' content ' text ' > pass
' ' content ' > pass
它会是什么样子?如果你知道任何关于正则表达式的好书,那对我来说也很有用。
答案 0 :(得分:1)
您可以使用|
运算符将其添加到备用列表中:
^(?<q>')(?:'[^']*'|[%\p{Zs}\p{L}\p{N}|()])*\k<q>$
我删除了[]
周围的'
,并将*
量词放在备用列表中。此外,(?i)
是多余的,因为正则表达式中没有文字字母。
以下是regex demo
请注意,此'content1' it won't pass 'content2'
不会通过,但我猜这是预期的行为。
<强>更新强>:
如果您只想在'
之间允许'...'
,则可以将其添加到字符类中:
^(?<q>')['%\p{Zs}\p{L}\p{N}|()]*\k<q>$
请参阅another demo(在多线模式中添加了\r?
用于演示目的)