有关php正则表达式的一个疑问

是有关正则表达式中的模式修饰符 /x 的使用的问题
文档中是这样写的:
如果设置了这个修饰符,模式中的没有经过转义的或不在字符类中的空白数据字符总会被忽略, 并且位于一个未转义的字符类外部的#字符和下一个换行符之间的字符也被忽略。 这个修饰符 等同于 perl 中的 /x 修饰符,使被编译模式中可以包含注释。 注意:这仅用于数据字符。 空白字符 还是不能在模式的特殊字符序列中出现,比如序列 (?( 引入了一个条件子组(译注: 这种语法定义的 特殊字符序列中如果出现空白字符会导致编译错误。 比如(?(就会导致错误)。
不是太能明白讲的意思,而且也没有例子说明,谁能看下这个啊?最好能给个用例
谢谢啊~

1个回答

 $str = "ab cdeft";
$matches0 = $matches1 = array();
preg_match('/ab c/x', $str, $matches0);
preg_match('/ab c/', $str, $matches1);
print_r($matches0);
print_r($matches1);

结果为:Array ( ) Array ( [0] => ab c )

$matches0 为空,因为模式中的空格被忽略, 匹配不到结果

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
有关正则表达式的疑问
![图片说明](https://img-ask.csdn.net/upload/201703/05/1488718536_374140.png)
php正则表达式匹配疑问。
[code=PHP]$data = " aaa/r/naaaaaaaaaaaa"; rnrnpreg_match_all('/]*charset=([a-zA-Z0-9]*[\-]*[0-9]*)/', $data, $meta);rnvar_dump($meta);[/code]rn为什么打印出来是:rnarrayrn 0 => rn arrayrn 0 => string ' rn arrayrn 0 => string 'utf-8' (length=4)rnrn第二个匹配到utf-8是怎么匹配的?rn不是只能匹配第一个吗?
PHP有关去空格的正则表达式
1.去后导空格(包括半角空格和全角空格)的正则表达式先用正则表达式$str=ereg_replace("( |   )*$","",$str)将字符串结尾处的半角空格和全角空格用半角空格替换,然后再用函数trim($str)即可2.去前导空格(包括半角空格和全角空格)的正则表达式先用正则表达式$str=ereg_replace("^( |   )*|","",$str)将字符串前面的半角空格和全角
关于正则表达式的一个疑问
[code=PHP]rn[url=http://www.baidu.com]baidu[/url]rn,rn[url=http://www.google.com]google[/url]rn[/code]rn第一种回车换行后加逗号或者其他任意字符rnrnrn[code=PHP]rn[url=http://www.baidu.com]baidu[/url],[url=http://www.google.com]google[/url]rn[/code]rnrn第二种,两个挨着间加一个逗号或者其他任意字符rnrnrnrn匹配规则rnrn[code=PHP]rn$message = preg_replace("/\[url=(.*)\](.*)\[\/url\]/i","\\2",$message);rn[/code]rnrn第一种能正确替换成HTML A标签格式, 但第二种就替换成第一个[url]和最后一个结束[/url]间内容。结果为 rn[code=PHP]rngooglern[/code]rnrn请教一下怎么回事?谢谢。rn
有关一个大大的疑问
CSDN论坛中有很多的版块,可是发表话题的时候不用选择发表在哪一个版块,他是怎么实现把要发表的话题所属的版块自动添加数据库中的呀?请高手指点
有关VS2008的一个疑问
用VS2008 SP1,当使用release时,默认仍然会生成调试信息,而VS2003就不会, 这是故意这样做的,还是VS2008的一个BUG?rn另外生成调试信息会不会影响程序效率,个人认为不会影响
有关安全性的一个疑问?
一个简单的登录页面,两个文本框,一个登陆按钮,都系服务器控件。rn当用户点击登陆时会把用户名和密码进行来后台的数据库比较。rn疑问:rn 当用户点击登陆安钮时是不是用户名和密码是否已经转送到服务器上了?如果有人在中间使用一些拦截包的工具一拦截,那么用户名和密码不就完成给人家看了。rn还有,我在按登陆的事件里。把用户名和密码加密是不是没有用的,因为是服务器控件。请问有没有什么解决方法呢?
有关友元函数的一个疑问?????
//class.cpprnclass Xrnrn public:rn X():i(0)rn X(int n)rn rn i = n;rn rn rn void setI(int m)rn rn i = m; rn rn rn int getI(void)rn rn return i;rn rn friend void h(X &p);rn friend void Y::g(X &p); //报错说Y不是一个类或名字空间。rn friend class Z;rn private:rn int i;rn;rnrnclass Yrnrn public:rn void g(X &p)rn rn p.i++;rn rn;rnrnclass Zrnrn public:rn void f(X &p)rn rn p.i = p.i + 5;rn rn;rnrnvoid h(X &p)rnrn p.i = p.i +10;rnrn//file.cpprn#include"class.cpp"rn#includernusing namespace std;rnrnint main(void)rnrn X myclass_x;rn Y myclass_y;rn Z myclass_z;rnrn cout<
有关数据库连接池的一个疑问。
我没该如何使用PoolDataSource?它与我们自己通过定义数据结构编写的连接池有什么不一样的地方吗?请教!!!
有关引用的一个疑问!
#includernvoid main()rnconst int ival=1024;rn const int *const &ref1=&ival;rn cout<<*ref1<
有关弗洛伊德算法的一个疑问
[code=C#]rnFloyed()rnrn const int n = 100;rn for (int k = 0; k < n; k++)rn for (int i = 0; i < n; i++)rn for (int j = 0; j < n; j++)rn if (mat[i, j] > mat[i, k] + mat[k, j])rn rn mat[i, j] = mat[i, k] + mat[k, j];rn rec[i, j] = k;rn rn[/code]rn想问一下,如上弗洛伊德算法中,最后的rec数组表示的是什么意思?
有关深拷贝的一个疑问
class Studentrnrnpublic:rn Student(char *pName);rn Student(const Student& stu);rn ~Student();rnprivate:rn char *m_pcName;rn;rnStudent::Student(char *pcName)rnrn m_pcName = new char[strlen(pcName) + 1];rn strcpy(m_pcName, pcName);rn cout << "construct new student" <
有关Tabcontrol的一个疑问
假如使用了Tabcontrol的对话框的第三个标签页在它OnInitDialog()的时候需要Sleep(2000),那么这个程序启动的时候需要等2秒钟才能弹出对话框来。事实上我只需要在选择第三个标签页时Sleep(2000),不希望它影响整个程序的启动,应该怎样做?
PHP Session的一个疑问
问题:rn当我登录后,将用户名写入Session的$_SESSION['name']中,然后我重新登录,用别的用户名,但是不能改变$_SESSION['name']的值,不知道何解.rnrn我第一次用root登录,打印$_SESSION['name']为root,rn我第一次用dangdang登录,打印$_SESSION['name']还是为root,rn然后我就想到将$_SESSION['name']这个变量删除,但是打印后还是为root,rnrnrnif(isLogin($name, $pwd)) rn //将用户名写入Session,rn session_start(); //开始rn if(isset($_SESSION['name']))//判断变量是否存在rn unset($_SESSION['name']);rn session_destroy(); //销毁session*/rn rn rn session_start(); //重新开始一个sessionrn $_SESSION["name"] = $name; //创建Session变量,并设置值rn header("location:index.php");rnelse rn //返回首页,给出提示信息,重新登录rn header("location:Login.php?errorMessage=无效的用户名或密码");rnrnrn请问这个问题该怎么解决
有关正则表达式的一个问题
我想把一个text文件转成xml文件,现在text文件已经存如一个String类变量里。rn比如text里写rntitle:aaarnitem:rndate:bbbrncontent:abcrnitem:rndate:cccrn我想把它转成rn aaarnrnbbbrnabcrnrnrncccrnrn用String类的replaceAll方法,如何写?谢谢
一个有关正则表达式的问题?
我运行一个例子,代码如下:rnimport org.apache.regexp.*;rnrnpublic class REmatch rn public static void main(String[] argv) throws RESyntaxException rn rn String patt = "Q[^u]\\d+\\.";rn RE r = new RE(patt);rn String line = "Order QT300. Now!";rn if (r.match(line)) rn System.out.println(patt + " matches \"" + rn r.getParen(0) +rn "\" in \"" + line + "\"");rn else rn System.out.println("NO MATCH");rn rn rnrn编译出现以下错误,希望各位指点,错误如下:rnF:\资源\JAVA经典实例\javacooksrc\javacooksrc Folder\javacook\RE\REmatch.java:1: package org.apache.regexp does not existrnimport org.apache.regexp.*;rn^rnF:\资源\JAVA经典实例\javacooksrc\javacooksrc Folder\javacook\RE\REmatch.java:9: cannot resolve symbolrnsymbol : class RESyntaxException rnlocation: class REmatchrn public static void main(String[] argv) throws RESyntaxException rn ^rnF:\资源\JAVA经典实例\javacooksrc\javacooksrc Folder\javacook\RE\REmatch.java:12: cannot resolve symbolrnsymbol : class RE rnlocation: class REmatchrn RE r = new RE(patt);rn ^rnF:\资源\JAVA经典实例\javacooksrc\javacooksrc Folder\javacook\RE\REmatch.java:12: cannot resolve symbolrnsymbol : class RE rnlocation: class REmatchrn RE r = new RE(patt);rn ^rn4 errorsrnrn
一个有关正则表达式的问题
请看下面方法:rnfunction checkTest()rn var zz = /h[ea]1,2d/g;rn alert(zz.test("heed"));rn alert(zz.test("head"));rn alert(zz.test("haad"));rn alert(zz.test("haed"));rn rn输出结果:rntruernfalsernturernfalsernrn请问javascript高手这是为什么?
关于正则表达式的一个小疑问
为何koro不能匹配[code=text]^(((ko)|(go)ro)|頃)$[/code]?
求助,一个关于正则表达式的疑问
bool a = Regex.IsMatch(@"1.1.1.", @"(\d1,3\.\d1,3\.\d1,3\.\d1,3)?");rnMessageBox.Show(a.ToString());rnrn上面这个正则,只是简单的判断下是否字符串是类似于IP的格式.(\d1,3\.\d1,3\.\d1,3\.\d1,3)是一个整体,是像1.1.1.1这样的格式rn要么它是一个空字符串,要么是一个完整的IP格式.这两种情况都返回true,如果只有1.1.这样一半的情况,应该是False的rnrn但现在我在整个括号后加了?号后.发现1.1.也是返回true的,这是为什么呢,然后?号加在整个括号后,不是指定括号里的内容作为整体出现0次或1次吗rn
正则表达式疑问
偶然看到如下的表达式例子,很是不解。求大神指点rn[code=SQL]SELECT regexp_substr('Republicc Of Africaa', '([a-z])([a-z])+\1', 1, 1, 'i')rnFROM dual;rn[/code]rn--返回rnAfricaarn[code=SQL]SELECT regexp_substr('Republicc Of Africaa', '([a-z])([a-z])+\2', 1, 1, 'i')rnFROM dual;[/code]rn--返回rnRepubliccrn求大神解释下,为什么是这个结果?
正则表达式疑问:
一管理系统中登录账号:rn①学生:学号为16位数字:并以年份开头 如2011 1111 0400 0629 2011是年份 1111 是学院代码 ,此正则中只需限定rn年份在1970-2200年即可rn②管理员:以字母开头 admin123之类rnrnrn也就是说账号中不能出现 123admin 或者年份不在1970-2200之间的帐号!
正则表达式的疑问
在看正则的exec和RegExprnrn[code=JScript]rn rn[/code]rnrn输出rnrn234-rn-44rn234-rn-44rnrn为什么结果是这样的?如果我要输出结果是rnrn234-44rn234-44rnrn该怎么弄
求一个php正则表达式
我有一个字符串$str,其中字符串变量的值是一段的html代码:如 rn rnP1P1P1P1P1P1! rn rn rn rnP2P2P2P2P2P2! rn rn rn rnp3p3p3p3p3p3! rn rn rn rnp4p4p4p4p4p4! rn rn rn我想通过正则去找到关于pif标签中所有key和value.这个怎么写呀,请各位指教下,谢谢了
求一个php 正则表达式
对字符串中包含[img]*/*[/img] 的 ,用php 正则替换成rn我是这样写的,rn",$b);rnrnrn echo $a;rn?>rn rn但是不管用?怎么替换,请指点
求php的一个正则表达式
"a%^&$^*%^&*$#^^&asdfasdfdede:vote id='2' lineheight='22' rntablewidth='100%' titlebgcolor='#EDEDE2' rntitlebackground='' tablebgcolor='#FFFFFF' rn/dede:votehsdfhrguhkdjfgYERTHGASdtwefasgERYRTYhsfhsfh" rn求php的一个正则表达式能从这段代码中匹配出"dede:vote id='2' lineheight='22' rntablewidth='100%' titlebgcolor='#EDEDE2' rntitlebackground='' tablebgcolor='#FFFFFF' rn/dede:vote"rn
PHP正则表达式的一个问题
$test="1982-08-09"rn想用PHP正则表达式把所有的"-"去掉.rnstrtr($test,'-','')rn结果发现.去不掉.rn用strtr($test,'-',' ')rn就变成1982 08 09rn有没有办法能让它彻底的变成19820809呢...
php的一个正则表达式
我有一段HTML源码,现在我想提取其中位于 和标签之间的内容,不过始终提取不到。HTML代码如下:rn[code=HTML] Compile Errorrn Compile Error rn F:\temp\8888092.1469\Main.java:1: illegal character: \35rn#includern^rnF:\temp\8888092.1469\Main.java:5: class, interface, or enum expectedrn __int64 n,k;rn ^rnF:\temp\8888092.1469\Main.java:6: class, interface, or enum expectedrn scanf("%d",&t);rn ^rnF:\temp\8888092.1469\Main.java:7: class, interface, or enum expectedrn while(t--)rn ^rnF:\temp\8888092.1469\Main.java:10: class, interface, or enum expectedrn k=n*n;rn ^rnF:\temp\8888092.1469\Main.java:11: class, interface, or enum expectedrn if(k>10000)rn ^rnF:\temp\8888092.1469\Main.java:13: class, interface, or enum expectedrn elsern ^rnF:\temp\8888092.1469\Main.java:15: class, interface, or enum expectedrn rn ^rnF:\temp\8888092.1469\Main.java:17: class, interface, or enum expectedrnrn^rn9 errorsrnrn rn[/code]rnrn我的正则表达式如下:rnrn[code=Perl]$re = '/ (.*?)<\/pre>/';[/code]rnrn请高手指点,小弟不胜感激!!!
php一个正则表达式的问题
首页 上一页 1 2 下一页rn我想获取xxx4的这段该如何写rn/(.*?)下一页<\/a>/ 我用这个只能获取xxx1这里的字符串
php 一个正则表达式
怎么样使用正则匹配一个字符串取非?[^p]rnrn例如:有这样一个字符串 “# #123 # #哈哈哈哈#”需要通过一个正则得到以 #开始,以 #结束,中间必须有字符但是不能是#rnrn通过match_all希望得到如下结果: rn1) #123 # rn2) #哈哈哈哈#
php 求一个正则表达式
需要将非标签自己的空格替换为   rnrn例如 rnrn有标签时:rn 原始: 123 456 7 89 0 dd d rn 结果: 123&nbsp456  7&nbsp89&nbsp0 dd&nbspd rn没有标签时:rn 原始: 123 456 rn 结果: 123&nbsp456 
有关linux内核地址的一个疑问
[b][size=14px]最近看linux内核启动过程, 有一点疑问想不明白,只好来求助了。rn问题如下:rn首先linux中,进程虚拟地址空间的3G-4G是内核空间,映射到物理地址的0地址。rn并且 linux内核编译出来以后,可执行代码中的地址都是虚拟地址, 也就是说地址都大于0xc0000000, 目标是要内核映象在虚拟内核空间中运行, 这个也没问题。rn我知道linux启动的时候,会开启分页功能,但在开启分页功能之前,仍会有一段代码运行在没有分页功能的状态下,这个时候linux内核代码中的指令不就无法正常寻址了吗?(因为分页没开启的时候线性地址就是物理地址,而内核并不在0xc0000000的位置上)[/size][/b]
有关Cookies的一个疑问。分~~~~~~~~
那位仁兄能详细讲讲Cookies,为何每次上网登陆某个帐号之后,IE会自动将其保存,且在IE属性里删除Cookies甚至历史纪录都没用?下次只要点击登陆框就会在下面出现一个选择框让你选择帐号,怎样删除呢?望指点。。。。。
有关clearcase版本控制的一个疑问
有关才clearcase的使用,咨询个问题:rn 在提交修改的源代码的时候,我发现他需要每个文件都确认一次,每次都需要填写一个提交说明rn 虽然可以通过applyall按钮或者说选项,来让他每个文件都是用同样的设置,但是还是可以看出来rn clearcase是对每个文件进行跟踪的,而不是对一次提交的所有文件进行跟踪。这一点,也可以从clearcasern 的version tree看出来,他是针对每个文件的,而不是针对一次提交过程的。rn rn 如果clearcasebun只能提供这种模式,那么在某些情况下,会有些不便,原因如下:rn 对于某个MR的修正,往往可能会涉及多个目录,多个文件的修改,有时候,这个改动还会相当大rn 此时,没有人会知道针对这个MR到底改动到哪些文件(退一步讲,到底改了哪些文件,需要修改者自己想办法去记住,或者手动纪录,rn 另外一种方法就是用clearcase的update view方法,知道改了哪些文件,但这一是耗时,二是只在提交前有效,提交后我怎么办?)rn 而别人如果想察看这次改动的情况,必须原原修改者拿到config spec和修改纪录才行rn 我觉得这是相当不方便的rn rn 那么,我想,clearcase有没有这样一种模式(或者说是操作方法),可以让工程师对一次提交作标记,在这个标记里面rn 可以纪录这一次提交所有相关的东西,比如,涉及的文件,改动的版本,所有改动的纪录等等rn 这样,别的工程师可以根据这个标记,很容易就知道改动的细节问题,这样又便于其他人做二次确认,rn 也便于对这个MR做修正(万一原来的工程师走了,或者改错了呢?)rn rn 我知道clearcase的这种操作模式跟cvs一样,但是同时,你可以察看另外一个工具subversion,是可以提供我所说的后面这种模式的rn 也可能是我对clearcase不熟悉,导致问出这么若的问题,如果是这样,请指教该如此操作,谢谢:)rn
有关一个网络“三通”的疑问!
前几天花两块钱在电脑城买了一个网络“三通”(类式电话的三通)有一个出端和两个入端。使用时,联A,B,C三台电脑,ip地址分别是192.168.0.1,192.168.0.2,192.168.0.3。A机网卡通过交叉线联到出端,B。C通过直通线联两个出端。后发现B、C可以ping通A,但B、C之间不能相互ping通!请教此类“三通”的工作原理及如何能使B、C相互ping通?
一个有关jQuery事件的疑问
首先上代码rn[code=javascript]rnvar tt = $( 'button' ).click( function() rn alert( '13242' );rn );rntt.remove();rn$( 'body' ).append( tt );rn[/code]rn[code=javascript]rndocument.getElementsByTagName( 'button' )[ 0 ].onclick = function() alert( 2342 ); ;rnvar tt = document.getElementsByTagName( 'button' )[ 0 ];rntt.remove();rndocument.body.appendChild( tt );rn[/code]rn在BODY中随便加个BUTTON标签,上面两段代码,第一段代码没有触发alert,而第二段代码触发了alert,原生暂不清楚内部实现,从以上代码可以看出,总之事件没有丢失,jQuery就不同了,请问是什么原因导致了这种情况的发生,是BUG还是jQuery的必然?多谢各位了
有关DECLARE_DYNCREATE宏的一个疑问
侯杰在他那本著名的《深入浅出MFC》中说:MFC类凭借在头文件中加入DECLARE_DYNCREATE这个宏,在实现文件中加入IMPLEMENT_DYNCREATE宏达到了动态生成的效果。这要借助一个“类型链表”来实现,这也是MFC实现RTTI的方式。rn 在他的书中,_IMPLEMENT_RUNTIMECLASS展开之后其中有一句是:rn static AFX_CLASSINIT _init_##class_name(RUNTIME_CLASS(class_name));rn通过这个结构的构造函数来实现链表的串联。rn 我在MFC的AFX.H中查看_IMPLEMENT_RUNTIMECLASS的宏定义,发现并没有这么一句定义静态结构的语句。在那三个著名的宏(DECLARE_DYNAMIC,DECLARE_DYNCREATE,DECLARE_SERIAL)中只有对应的IMPLEMENT_SERIAL宏展开之后有这么一句。rn 那如果不加DECLARE_SERIAL这个宏,而只用DECLARE_DYNCREATE,类型链表到底是怎么构建起来的?难道是他的书讲的MFC版本太低吗?我的VC是6.0版本的。
一个有关CAsyncSocket通讯的疑问
比如说这一段rnvoid MySock::OnReceive(int nErrorCode) rn rn  m_nLength=Receive(m_szBuffer,sizeof(m_szBuffer),0); rn  //下面两行代码用来获取对话框指针 rn  CCSockClientApp* pApp=(CCSockClientApp*)AfxGetApp(); rn  CCSockClientDlg* pDlg=(CCSockClientDlg*)pApp- >m_pMainWnd; rn  pDlg- >m_MSGS.InsertString(0,m_szBuffer); rn  memset(m_szBuffer,0,sizeof(m_szBuffer)); rn  CAsyncSocket::OnReceive(nErrorCode);rn  rn系统是如何触发的,rn应该是只要接到东西就发送消息,触发CAsyncSocket::OnReceive事件是不是,rn可是何时执行MySock的OnReceive函数呀
有关SQL查询的一个疑问
假设有一个“职工”表,表结构如下:(14分)rn职工号 姓名 年龄 月工资 部门号 电话 办公室rn1 张三 25 2000 1 12345 101rn2 李四 26 1500 1 54321 102rn3 王五 23 900 2 23456 201rnrn….. rn 然后我要查找每个部门的最高月工资 rn可以写这样的语句吗?rnSELECT MAX(月工资) rnFROM 职工AS A, 职工 AS BrnWHERE A.部门号 = B.部门号rnrn这样得到的是其中一个部门的最高月工资,还是各个部门的最高月工资都能列出来?rn
相关热词 c# login 居中 c# 考试软件 c# 自然语言分析 c# 分段读取文件 c# 泛型反射 c#打断点 c# 时间转多少秒 c# 线程函数加参数 c# modbus 读取 c#查询集合表