簡體   English   中英

PHP和Regex-在單個字段中處理POST變量

[英]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.

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