[英]PHP And Regex - Handling POST Variables in Single Field
所以我在Regex上遇到了一些問題。 我需要匹配所有出現的
--property:value --property:value ...
Slack Slash Commands
使用一種需要字符串處理的POST
數據發布方法,因為它在命令/example --property:value --other:value
之后接受所有文本,並將其發送為:
text: --property:value --other:value
我對Regex並不是很厲害,但是我能夠提出以下建議:
--([^:=]+)([=]|[:])([^-]+)
這樣,它可以處理類似
--property:value
--property:value with spaces
--property:value_with_underscores
--property=value
--property=value with spaces
--property=value_with_underscores
// etc etc
拆分后,我確實需要修整該值,以免在命令之間留出多余的空格,但這很容易做到。
失敗的唯一地方是以下內容:
--property:value-with-dashes
因為我捕獲了([^-]+)
X個實例,所以看到了第一個-
並終止了,所以我最后
--property:value // Missing `-with-dashes`, as invalid Match
本質上,不是需要在第一個-
處終止,而是需要它在第一個--
處終止(即,另一個命令的開始),但是我不確定如何解決此問題...我不確定術語(負向超前已經出現了幾次,但我不確定如何使它起作用)
您可以提前使用此正則表達式:
--([^:=]+)[:=](.*?)(?=\s+--|\z)
正則表達式詳細信息:
--
:匹配文字--
([^:=]+)
匹配1+字符不在:
和=
[:=]
:匹配:
或=
(.*?)
:匹配0個以上的字符(惰性匹配) (?=\\s+--|\\z)
:斷言我們有1+個空格,后跟--
或行尾
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.