⑴ perl用正則怎樣匹配字元串里兩個name:後面的內容 name:123 name:234 只想獲取123和234
php的正則是源自Perl且大體兼容Perl的。我手上只裝了PHP。
<?php
$s="perl用正則怎樣匹配字元串里兩個name:後面的內容?\nname:123 name:234 只想獲取123和234 \n name:567";
preg_match_all('/name:(?<id>\d+)/m',$s,$m);
var_mp($m['id']);
========
輸出
array
0 => string '123' (length=3)
1 => string '234' (length=3)
2 => string '567' (length=3
值得注意就是你給的name後面的冒號是全形的':',我這里也是按這個全形符號寫的。
⑵ php中的正則表達式為什麼會和Perl、POSIX扯上關系
一直以來,Perl被視為正則表達式的標准,它提供一種全面的正則表達式語言。php就按這個Perl正則標准來制定的。
在PHP手冊里Perl
兼容正則表達式函數的第一句就是這樣說的:「本類函數中所使用的模式極其類似
Perl。」
注意是「極其類似」。
Perl和POSIX很多都是相同的,因為Perl是由POSIX派生來的。
所以PHP都可以使用兩套正則表達式規則,一是POSIX
1003.2定義的正則;二是PCRE庫提供PERL兼容正則。
⑶ 幫忙解釋一個php perl正則表達式
[^>]的意思是在script標簽結束前,可能有的script標簽的各種屬性,比如type,src等。^出現在[]裡面說明除了它後面的字元以外的所有字元~~,在這里就是除了>以外的所有字元~~而*?>裡面的>就和前面的<構成一個完整的標簽。就是這個意思。沒啥難的
⑷ perl中正則表達式是按字元匹配還是按位元組匹配的呢
正則表達式什麼時候還按照位元組來匹配了?正則表達式不分perl、java、js還是python,它是一個獨立的系統。
正則本身就決定了它一定是用來匹配字元的。只要給定字元串,就可以來匹配字元串。
⑸ php 正則表達式
建議你到我的網站上下載PHP5參考手冊,里邊有詳細的正則表達式的參考。
模式要有開始和結束的字元,一下都是合法的:
/
|
#
'
前提是模式中不能再出現這個字元了。
結尾的/後邊的is是模式修政府,具體如下
i (PCRE_CASELESS)
如果設定此修正符,模式中的字元將同時匹配大小寫字母。
m(PCRE_MULTILINE)
默認情況下,PCRE 將目標字元串作為單一的一「行」字元所組成的(甚至其中包含有換行符也是如此)。「行起始」元字元(^)僅僅匹配字元串的起始,「行結束」元字元($)僅僅匹配字元串的結束,或者最後一個字元是換行符時其前面(除非設定了 D 修正符)。這和 Perl 是一樣的。
當設定了此修正符,「行起始」和「行結束」除了匹配整個字元串開頭和結束外,還分別匹配其中的換行符的之後和之前。這和 Perl 的 /m 修正符是等效的。如果目標字元串中沒有「\n」字元或者模式中沒有 ^ 或 $,則設定此修正符沒有任何效果。
s(PCRE_DOTALL)
如果設定了此修正符,模式中的圓點元字元(.)匹配所有的字元,包括換行符。沒有此設定的話,則不包括換行符。這和 Perl 的 /s 修正符是等效的。排除字元類例如 [^a] 總是匹配換行符的,無論是否設定了此修正符。
x(PCRE_EXTENDED)
如果設定了此修正符,模式中的空白字元除了被轉義的或在字元類中的以外完全被忽略,在未轉義的字元類之外的 # 以及下一個換行符之間的所有字元,包括兩頭,也都被忽略。這和 Perl 的 /x 修正符是等效的,使得可以在復雜的模式中加入注釋。然而注意,這僅適用於數據字元。空白字元可能永遠不會出現於模式中的特殊字元序列,例如引入條件子模式的序列 (?( 中間。
e
如果設定了此修正符,preg_replace() 在替換字元串中對逆向引用作正常的替換,將其作為 PHP 代碼求值,並用其結果來替換所搜索的字元串。
只有 preg_replace() 使用此修正符,其它 PCRE 函數將忽略之。
注意: 本修正符在 PHP3 中不可用。
A(PCRE_ANCHORED)
如果設定了此修正符,模式被強制為「anchored」,即強制僅從目標字元串的開頭開始匹配。此效果也可以通過適當的模式本身來實現(在 Perl 中實現的唯一方法)。
D(PCRE_DOLLAR_ENDONLY)
如果設定了此修正符,模式中的美元元字元僅匹配目標字元串的結尾。沒有此選項時,如果最後一個字元是換行符的話,美元符號也會匹配此字元之前(但不會匹配任何其它換行符之前)。如果設定了 m 修正符則忽略此選項。Perl 中沒有與其等價的修正符。
S
當一個模式將被使用若干次時,為加速匹配起見值得先對其進行分析。如果設定了此修正符則會進行額外的分析。目前,分析一個模式僅對沒有單一固定起始字元的 non-anchored 模式有用。
U(PCRE_UNGREEDY)
本修正符反轉了匹配數量的值使其不是默認的重復,而變成在後面跟上「?」才變得重復。這和 Perl 不兼容。也可以通過在模式之中設定 (?U) 修正符或者在數量符之後跟一個問號(如 .*?)來啟用此選項。
X(PCRE_EXTRA)
此修正符啟用了一個 PCRE 中與 Perl 不兼容的額外功能。模式中的任何反斜線後面跟上一個沒有特殊意義的字母導致一個錯誤,從而保留此組合以備將來擴充。默認情況下,和 Perl 一樣,一個反斜線後面跟一個沒有特殊意義的字母被當成該字母本身。當前沒有其它特性受此修正符控制。
u(PCRE_UTF8)
此修正符啟用了一個 PCRE 中與 Perl 不兼容的額外功能。模式字元串被當成 UTF-8。本修正符在 Unix 下自 PHP 4.1.0 起可用,在 win32 下自 PHP 4.2.3 起可用。自 PHP 4.3.5 起開始檢查模式的 UTF-8 合法性。
⑹ php正則表達式 怎樣從後面開始匹配
這頭尾兩個斜杠/是正則表達式的限定符,這是perl正則的標准,而php支持的正則表達式就是perl正則的規范。表示兩個斜杠之間就是正則內容,在結尾斜杠後面可以開啟匹配的模式,例如:/^[\w\x80-\xff]{3,15}$/i
,後面的
i
就是忽略大小寫匹配。
⑺ 求一個PHP的密碼匹配正則
你這里要求了密碼長度為6-18位,/[\s\S]+/只能匹配任意字元,且能偶匹配的字元遠超出你給的限制。
建議你在匹配密碼前,先對密碼字元串的長度進行檢驗,然後再對密碼字元的合法性進行判斷,
這里合法性的判斷又有很多,如必須以字母開頭、數字開頭、數字結尾等等;
下面寫了一個正則表達式只能匹配當且僅包含由字母、數字、特殊字元!@#$%^&*_組成的密碼字元串。
如下:
[-\da-zA-Z!@#$%^&*_]*
更嚴格的判斷,比如開頭^,結尾$的判斷,必須包含一個字母一個數字等等,根據自己的需要進行更改完善
⑻ PHP中的正則表達式是什麼意思
php中沿襲了perl語言的正則表達式規則,用戶需要根據正則表達式規則書寫一些具有一定含義的字元串,然後通過匹配從而提取用戶想要的信息