[英]C# RegEx to match specific strings
我需要匹配(使用正則表達式)字符串,如下所示:
必需:custodian_ {number 1-9} _ {fieldType txt或ssn}可選:_ {fieldLength 1-999}
因此,例如:custodian_1_ssn_1有效custodian_1_ssn_1_255有效
保管人或保管人_或保管人_1或保管人_1_或保管人_1_ssn或保管人_1_ssn_或保管人_1_ssn_1_無效
目前,我正在與此:
(?:custodian|signer)_[1-9]?[0-9]_(?:txt|ssn)_[1-9][0-9]?(_[1-9]?[0-9]?[0-9]?)?
正則表達式和api正在工作:custodian_1_txt_1 custodian_1_ssn_1 custodian_1_txt_1_25 5 <----與最后一個“ 5”不匹配
有什么想法嗎?
您可以使用模式:
^custodian(?:_[a-z0-9]+)+$
^
行首的位置。 custodian
匹配文字串custodian
。 (?:_[a-z0-9]+)+
非捕獲組。 _
多個序列,后跟字母數字。 $
行尾位置。 您可以在此處檢查正確的匹配項。
顯然,您可以修改模式以在非捕獲組中添加子字符串signer
,如下所示:
^(?:custodian|signer)(?:_[a-z0-9]+)+$
。
我建議使用\\d
而不是您的數字,這是我的代碼嘗試:-
(?:custodian|signer)_[1-9]?[0-9]_(?:txt|ssn)_[1-9][0-9]?(_[1-9]?\d*)?
我只是在您的模式末尾添加了一個\\d
值,以匹配所有匹配末尾的數字。
您可以使用錨點來聲明字符串的開始^
和結束$
,對於最后一部分,至少使前1-9不是可選的,否則它將匹配並在末尾加下划線:
^(?:custodian|signer)_[1-9]?[0-9]_(?:txt|ssn)_[1-9][0-9]?(_[1-9][0-9]?[0-9]?)?$
如果您僅對最后一位數字感興趣,那么此超級通用正則表達式將執行以下操作:
(?:.+)_(\d+)
如果確實需要匹配整個字符串,則可以這樣做:
^(?:custodian|signer)_\d+_(?:txt|ssn)(?:_\d+)?_(\d+)$
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.