[英]Can't find the right regex
我花了最后4個小時試圖找出如何編寫一些正則表達式的表達式,但是每次我認為得到它時,我的測試都會失敗...有人可以幫助我還是給我一些提示,讓我走上正確的軌道? 我面前有一張備忘單。
我需要以下內容:一個正則表達式,可以給我每個單詞一個帶有?
的字符串?
對此。
示例: this is a? example sentence? to test the regex?
this is a? example sentence? to test the regex?
我想要a
, sentence
和regex
作為結果。
我想出的最好的正則表達式是/\\w\\?/
。
我想說的是,首先,您可以將一個單詞定義為\\S+
(您沒有定義一個單詞,因此我將繼續使用它。更改為其他內容,例如,如果需要,可以使用限制性更強的字符類,也許例如\\w+
),甚至可能是\\b\\S+\\b
。
由此,您需要檢查?
,可以通過正向超前(?= ... )
。
現在,您可以從(?=\\?)
開始,但這將一次檢查正則表達式中的一個位置,並且如果使用?
將不可行?
是一個單詞的開頭。 因此,在找到?
之前,還需要允許任意數量的字符(甚至0) ?
: (?=.*\\?)
現在, .*
將使正則表達式可以跨單詞,這是不理想的,將其替換為\\S*
:
\b(?=\S*\?)\S+
而且您實際上可以刪除最后一個\\b
因為一個單詞不會比\\S
更進一步。
正則表達式如下
$string = "this is a? example sentence? to test the regex?";
$output_array = array();
preg_match_all("/\b([a-zA-Z]*)\?/", $string, $output_array);
print_r($output_array[1]);
這將返回所有沒有?
的比賽?
在末尾。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.