我試圖找到一個正則表達式來匹配模式下(沒有他們的引號):PHP - 的preg_match - 匹配一個單詞,或匹配字,接着字(S)
「!! (0)=!通訊,匹配(1)=通訊
「!comm param1 param2」 - 匹配,匹配(0)=!通訊參數1參數2,匹配(1)=通訊,匹配(2)=參數1參數2
「!COMM」 - 如果不匹配
我開始如下:
$string1 = "!comm";
$string2 = "!comm param1 param2";
$string3 = "!comm ";
preg_match("`!(.*?)$`", $string1, $match1);
preg_match("`!(.*?)\s(.*)$`", $string2, $match2);
preg_match("`!(.*?)\S$`", $string3, $match3);
echo "<h1>Test 1</h1>";
echo "<pre>";
print_r($match1);
print_r($match2);
print_r($match3);
echo "</pre>";
這會給出確切的輸出,我想,只要他們不是廣義和只有個人工作:
Array
(
[0] => !comm
[1] => comm
)
Array
(
[0] => !comm param1 param2
[1] => comm
[2] => param1 param2
)
Array
(
)
然後試圖將它們合併爲:
`!(.+)($|\s(.*)$|\S$)`
但顯然失敗了,我知道我在想錯。我嘗試了一些其他的方法,儘管我沒有把它們保存起來,但在Google搜索一段時間之後,我大部分都是盲目的拍攝。預見性的方式,或者如果/其他方式,或者已經結束了「!comm param1 param2」和「!comm」匹配或者僅僅作爲單獨的匹配。
我確實認爲這在RegEx中是可行的,但我在RegEx中仍然太新了,我覺得我的思維方式還沒有找到它的位置。因此,除了全功能的RegEx準備好使用之外,我希望通過一步一步的流程來實現這一目標。
你可能要考慮使用RegexBuddy - 有用的編寫更復雜的正則表達式。 – Eli
@Eli謝謝。然而,雖然它看起來很有用,而且我一直聽到這個消息,但我寧願選擇一個免費軟件解決方案,因爲我目前無法負擔得起,而且我只是以非商業的方式嘗試RegEx。 – TheDeadLike