在PHP中,我想获取字符串中的所有标签(例如@Joe),但避免使用电子邮件地址(例如dave@example.com)。所以在:@Joehello!@Dave'semailaddressisdave@example.com我只想匹配@Joe和@Dave。我正在尝试的正则表达式是preg_match_all("([^]@[a-zA-Z0-9]+)",$comment,$atMatches);但这只匹配@Dave(在删除前导空格之后)。 最佳答案 您可以使用\B(不是单词边界)escapesequence排除前面有单词(如示例文本中的“
我正在尝试制作一个正则表达式来匹配特定条件,但我无法让它按照我想要的方式工作。我当前的正则表达式是'/S(?:[0-9]){2}E(?:[0-9]){2}/i'我希望它满足以下条件一个S至少一位0-9可选数字,可以是0-9一个E至少一位0-9可选数字,可以是0-9如果可能的话,我还希望它能匹配双数而不是单数,我按照互联网上的教程编写了正则表达式,但我觉得我遗漏了一些东西。谢谢... 最佳答案 试试这个:输出:TestingS11E22...Match!TestingS1E2...Match!TestingS11E2...Match!
我已经为此苦苦挣扎了半天,但我似乎找不到答案。请帮助菜鸟。:)我有一个字符串,它由几个放在大括号中的句子组成。它看起来像这样:{super骗人的额外文字。}{很棒的另一个文字!}{我们又来了...}现在我想拆分它。我发现我可以搜索.}{等模式。所以我这样做了:$key=preg_split('/[!?.]{1,3}\}\{/',$key);但是这样我失去了定界符,我失去了所有那些。!?等在句末。我试过这样做:$key=preg_split('/([!?.]{1,3}\}\{)/',$key,-1,PREG_SPLIT_DELIM_CAPTURE);$sentences=array();
我正在使用PHP的preg_replace,并尝试转换字符串abcd进入(a(b(c(d))))这是我得到的最好的:preg_replace('/.(?=(.*$))/','$0($1)','abcd');//a(bcd)b(cd)c(d)d()甚至可以使用正则表达式吗?编辑我刚刚在PCRE规范中发现了这一点:Replacementsarenotsubjecttore-matching,所以我原来的方法行不通。我想保留所有正则表达式,因为在我的实际用例中有一些更复杂的匹配逻辑。 最佳答案 怎么样:preg_replace('/./s
这个问题在这里已经有了答案:Regexlookahead,lookbehindandatomicgroups(5个答案)关闭9年前。有没有办法(除了进行两个单独的模式匹配)在PHP中使用preg_match来测试字符串或模式的开头?更具体地说,我经常发现自己想要测试我是否有一个匹配模式,它前面没有任何内容,如preg_match('/[^x]y/',$test)(也就是说,如果y前面没有x,则匹配它),但如果它出现在$test的开头,则也匹配y(当它前面也没有x,但前面没有任何字符,因此[^x]构造将不起作用,因为它始终需要一个字符来匹配它。在字符串末尾也有类似的问题,以确定是否出现了
我想通过正则表达式解析通过curl检索到的以下html标签内容。IND-203/9(49.4Ovs)因此输出将是"IND-203/9(49.4Ovs)"。我已经编写了以下代码,但它不起作用。$one="IND-203/9(49.4Ovs)";$five="~(?)[.]*(?=)~";preg_match_all($five,$one,$ui);print_r($ui); 最佳答案 试试这个:$string="IND-203/9(49.4Ovs)";动态跨度标签:preg_match('/]*>(.*?)/si',$string,$
这个问题在这里已经有了答案:RegexpatternforHH:MM:SStimestring(2个答案)关闭9年前。HH:MM:SS的正则表达式是什么HH是hours,但不限于日期或时钟,它可以是从0到任何整数的任何数字MM是分钟,最大值是59,从00开始SS是Seconds最大值是59并且从00开始
我正在尝试用正则表达式替换字符串,我真的希望社区能帮助我。我有这个字符串:031,02a,009,a,aaa,AZ,AZE,02B,975,135我的目标是删除这个正则表达式的相反[09][0-9]{2}|[09][0-9][A-Za-z]即a,aaa,AZ,AZE,135(查看实际效果:http://regexr.com?3795f)我的最终目标是preg_replace第一个字符串只得到031,02a,009,02B,975(查看实际效果:http://regexr.com?3795f)我对所有解决方案都持开放态度,但我承认如果可能的话,我真的很喜欢用preg_replace来解决
基本上,我只是想知道是否存在这样的函数:$string='helloWorld';//1uppercase,1lowercase,1numberandatleast8oflength$regex='/^\S*(?=\S{8,})(?=\S*[a-z])(?=\S*[A-Z])(?=\S*[\d])\S*$/'$percent=matchPercent($string,$regex);echo"thestringmatch{$percent}%ofthegivenregex";那么,结果可能是这样的:thestringmatch75%ofthegivenregex看到另一个帖子和问题,我
在我的项目中,我需要找到一个特殊的正则表达式,如果第一个字母是大写或小写,它就可以工作。以下是示例字符串:user=usernameUser=username现在,我试过这个正则表达式:'/[^\n]user[^\n]*/'但是如果第一个字母是大写,这个表达式就找不到任何东西,所以我的问题是:在这两种情况下,找到包含“user”的行的正确正则表达式是什么? 最佳答案 您可以使用以下正则表达式:$re="/^user.*$/mi";参见demoi选项表示“忽略大小写”,m表示“多行”,强制^和$匹配线边界。.将匹配除换行符以外的任何字