1. 程式人生 > >PHP正則-貪婪匹配(最大匹配) 和最小匹配的問題。

PHP正則-貪婪匹配(最大匹配) 和最小匹配的問題。

在抓取連結地址時,使用以下正則時發現,當在<a href="XXX">連結標題</a> 連結標題中含有HTML程式碼時,不能抓取到地址。
/<a[^>]+href=[/"/']{0,1}([^>/"/'/s]+)[/"/']{0,1}[^>]*>([^>]+)<//a>/i
尚若換成以下方式
/<a[^>]+href=[/"/']{0,1}([^>/"/'/s]+)[/"/']{0,1}[^>]*>(。+)<//a>/i
則不能抓取到你需要的連結資料,預設情況下,perl使用的是貪婪匹配模式,也就是儘可能多的匹配資料。
如:下面的指令碼打印出“matched defgabcdef”,因為它儘可能多地匹配模式,直至結尾的‘g’。

相關推薦

PHP-貪婪匹配(匹配) 匹配的問題

在抓取連結地址時,使用以下正則時發現,當在<a href="XXX">連結標題</a> 連結標題中含有HTML程式碼時,不能抓取到地址。 /<a[^>]+href=[/"/']{0,1}([^>/"/'/s]+)[/"/']{0,1}[^>]*>([^&g

PHP貪婪/懶惰匹配模式

當正則表示式中包含能接受重複的限定符時,通常的行為是(在使整個表示式能得到匹配的前提下)匹配儘可能多的字元。例如以下表達式將匹配以a開始,以b結束的最長字串: a.*b 如果用來搜尋“aabab”,它會匹配整個字串“aabab”。這就是貪婪匹配。 有時,需要匹配儘可能少的字

php判斷是否同時有數字字母

1.php正則判斷是否同時有數字和字母$subject = 'qq2';var_dump(preg_match('/^(?![0-9]+$)(?![a-zA-Z]+$)/', $subject)); 2.如果要限定只能數字和字母的話, 限定下結尾$subject = 'qq2';var_dump(preg_

PHP裡獲取一維數組裡的

php獲取一維數組裡的最大值和最小值的方法。 php獲取一維數組裡面的最大值: <?php $a=array('1','3','55','99'); echo max($a); php獲

編寫C#程序,計算去除值之後的平均值

pub ole eric efault lis ner .get ast c# 有10位評委對跳水運動員做評分,編寫C#程序,計算去除最大得分和最小得分之後的平均得分 作為運動員的跳水成績。 interface IMark using System.Collections

從輸入的值中獲取值,輸入0後結束(利用do_while boolean isRight來標識用戶輸入)

bool out 用戶 system efault 最大 pub string void mport java.util.Scanner; public class DoWhile2 {public static void main(String[] args) { int

預處理、const、static與sizeof-用#define實現宏並求

最大 運算 code span sizeof stat eof 代碼 bsp 1:實現代碼: #define MAX(x,y) (((x)>(y)) ? (x):(y)) #define MIN(x,y) (((x)>(y)) ? (x):(y)) 需要註

輸入一組整數,0結束輸入,之後輸出輸入的的整數.【思路】

cnblogs amp println system ack rgs int 輸入 != package com.ykmimi.new1; /** * 輸入一組整數,0結束輸入,之後輸出輸入的最大的和最小的整數. */ import java.util.Scanner

如何求數組的

pre 不能 for 進行 rip red arr func min 前言 取出數組中的最大值或者最小值是開發中常見的需求,但你能想出幾種方法來實現這個需求呢? Math.max JavaScript 提供了 Math.max 函數返回一組數中的最大值,用法是: Math

根據狀態變化情況,求

decode date 要求 情況 eight 測試表 技術分享 image group 題目1:根據第一二列,計算出第三列。即:求每組KH_VALUE狀態(1和0)變化的最小時間 --創建測試表 create table tmp as select to_date(‘

求一個類型的

最大 limit std min fin ons con n) define #include <stdio.h> #include <limits.h> #define MYMAX(T) \ (- ( ( 1<< ( s

二叉樹深度深度

str treenode oot null 避免 結果 一個 blog clas 最大深度: int maxDepth(TreeNode *root) { if(root == NULL) return 0;

js獲取數組中

ply 最大值 min pan 最小數 mat max 最大值和最小值 pre var max = Math.max.apply(null, 數組); 獲取最大值 var min = Math.min.apply(null, 數組);獲取最小值 一句話獲取數組中最大的數

springboot~為Money類型添加值的註解校驗

status ret 大於 public http money string uil lin 在spring框架裏,為我們集成了很多校驗註解,直接在字段上添加對應的註解即可,這些註解基本都是簡單保留類型的,即int,long,float,double,String等,而如果

Jsの數組練習-求一組數中的值,以及所在位置

span http ima scrip ice viewport 代碼實現 pre val 要求:求一組數中的最大值和最小值,以及所在位置 代碼實現: <!DOCTYPE html> <html lang="en"> <head>

(二十二)數組的

turn i++ pre arr sha println out get new class Demo4 { public static void main(String[] args) { int[] a = new int[]{12,1

java:接受用戶從鍵盤輸入的三個整數,並輸出

scan out sca system () 最小值 public tin 代碼 import java.util.Scanner 從鍵盤輸入要在開頭聲明這個。 Scnner in=new Scanner(Syetem.in); 聲明Scnner類型的in 如果要從鍵盤輸入

Java 數組 定義一個數組,獲取數組中的值,奇數個數偶數個數

++ java 偶數 system += 最小值 dem [] style /** * 定義一個數組,獲取數組中的最大值和最小值 奇數個數和偶數個數 * */ package com.xuyigang1234.chp01; public class Demo8 {

一次遍歷順序表同時找到

#include <stdio.h> /* 題目:天勤40頁思考題(3) 在一個有n個整數的順序表L中,以不多於3n/2的平均比較次數,找出最大值和最小值 即 通過一次遍歷順序表找出順序表的最大值和最小值,平均比較次數=n<3n/2 */ #define maxlen 50 #

給定陣列a[0:n-1]試設計一個演算法,在壞情況下用[3n/2 -2 ] 次比較找出a[0:n-1]中元素的值;教材2-15

給定陣列a[0:n-1]試設計一個演算法,在最壞情況下用[3n/2 -2 ] 次比較找出a[0:n-1]中元素的最大值和最小值; 解:要求對於陣列用小於【3n/2-2】的比較次數找到兩個最值 可以用陣列第一個元素來初始化max,min 然後遍歷陣列,分別和max,min比較,一遍就可以找