簡體   English   中英

現有正則表達式的新規則允許單引號

[英]New rule to existing regex allowing single quotes

在這里問了另一個問題 ,但是我仍然遇到問題。

我有一個遵循一些規則的表達式:

  • 字符'必須是第一個和最后一個字符
  • 內可以有零個或多個空格''
  • 里面可能有零%或更多%''
  • ''表達式中可以包含零個或多個單詞(字母和數字):

     (?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)是多余的,因為您的正則表達式中沒有文字字母。

這是正則表達式演示

請注意,此'content1' it won't pass 'content2'不會通過,但是我想這是預期的行為。

更新

如果只想在'...'之間允許' ,則可以將其添加到字符類中:

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

查看另一個演示 (在多行模式下為演示目的添加了\\r?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM