我有一個字符串2名的文本:正則表達式來獲得無空間中的字符內的特殊標籤
%胡安%
%胡安岡薩雷斯%
我只想能夠拿到%胡安%,而不是與空間,我一直在嘗試幾個正則表達式運氣。我目前使用:
/%(.*)%/U
但它得到的東西,我試圖添加和使用[^ \ s]但它不起作用。
請幫忙嗎?
我有一個字符串2名的文本:正則表達式來獲得無空間中的字符內的特殊標籤
%胡安%
%胡安岡薩雷斯%
我只想能夠拿到%胡安%,而不是與空間,我一直在嘗試幾個正則表達式運氣。我目前使用:
/%(.*)%/U
但它得到的東西,我試圖添加和使用[^ \ s]但它不起作用。
請幫忙嗎?
問題是.
匹配任何字符,但換行符。 /U
非執行模式僅使.*
懶惰,並且它捕獲從%
直到第一個%
到第一個%
右側的文本。
如果你的字符串包含1雙%...%
,你可以使用
/%(\S+)%/
的\S+
模式匹配比其他空白字符1+,整個[^\h%]
否定的字符類別匹配任何字符,但水平空間和%
符號。
如果您有多個%...%
對,你可以使用
/%([^\h%]+)%/
見another regex demo,其中\h
任何水平空白匹配。
$re = '/%([^\h%]+)%/';
$str = "%Juan%\n%Juan Gonzalez%";
preg_match_all($re, $str, $matches);
print_r($matches[1]);
not the one with the Space
=不[^
+空間\s
+ ]
在它。
但是,其中也不能有%
。
作品出來是%([^\s%]+)%
但是,對於額外的信用,你可以/應該也符合一個與它的空間
來樣保證均衡的分隔符設置。
(?:%([^\s%]+)%|%[^%]*%(*SKIP)(*FAIL))
解釋
(?:
%
([^\s%]+) # (1), Tag you need
%
|
% [^%]* % (*SKIP)(*FAIL) # Consume, but don't match other tags
)
研究字符類。 –
我不知道你是怎麼玩的,但是'/%([^ \ s] +)%/'應該可以。 – AbraCadaver
你想在這種情況下捕捉什麼:'..................................%胡安%% Juan Gonzalez%michel%herbert philippe %% le_gros_Louis%'? *(注意「michel」不在配對'%'中)* –