我知道,现在我有两个问题。 但我很开心! 我从这个build议开始,不要尝试和分裂,而是要匹配什么是可以接受的领域,并从这里扩展到这个expression。 final Pattern pattern = Pattern.compile("\"([^\"]*)\"|(?<=,|^)([^,]*)(?=,|$)"); 表情看起来像这样没有恼人的逃脱引号: "([^"]*)"|(?<=,|^)([^,]*)(?=,|$) 这对我来说很好,不pipe它是匹配“两个引号,还是它们之间的任何一个”,或者是“行首或逗号与行末或逗号之间的事情”。 迭代通过比赛获得我所有的领域,即使他们是空的。 例如, the quick, "brown, fox jumps", over, "the",,"lazy dog" 分解成 the quick "brown, fox jumps" over "the" "lazy dog" 大! 现在我想放弃引号,所以我添加了前瞻性和隐藏的非捕获组,就像我为逗号所做的一样。 final Pattern pattern = Pattern.compile("(?<=\")([^\"]*)(?=\")|(?<=,|^)([^,]*)(?=,|$)"); 再次expression的是: (?<=")([^"]*)(?=")|(?<=,|^)([^,]*)(?=,|$) 而不是预期的结果 the quick brown, fox jumps over the lazy dog 现在我得到这个故障: the quick "brown fox […]
我试图grep所有的Ui\.实例Ui\. 没有跟随Line或甚至只是字母L 写一个正则expression式来寻找一个特定string的所有实例NOT NOT其他string的正确方法是什么? 使用lookaheads grep "Ui\.(?!L)" * bash: !L: event not found grep "Ui\.(?!(Line))" * nothing
我错过了一个标准的API调用,从数字中删除尾随无关紧要的零吗? 防爆。 var x = 1.234000 // to become 1.234; var y = 1.234001; // stays 1.234001 Number.toFixed()和Number.toPrecision()不是我所期待的。
我正在使用这种模式来检查电话号码的validation ^[0-9\-\+]{9,15}$ 这是适用于0771234567和+0771234567 ,但我希望它工作077-1234567和+077-1234567和+ 077-1-23-45-67和+ 077-123-45-6-7 我应该改变什么模式?
什么是CSS标识符id和class的(完整)有效/允许的字符集字符? 有没有一个正则expression式,我可以用来validation? 它是浏览器不可知论者?
我需要MatchData在string中出现正则expression式。 这与在正则expression式匹配中所提出的扫描方法不同,因为它只给了我一串string(我需要完整的MatchData来获取开始和结束信息等)。 input = "abc12def34ghijklmno567pqrs" numbers = /\d+/ numbers.match input # #<MatchData "12"> (only the first match) input.scan numbers # ["12", "34", "567"] (all matches, but only the strings) 我怀疑有一些我忽略的方法。 build议?
在Python / PHP / JavaScript中是否有正则expression式的实现支持可变长度lookbehind-assertion? /(?<!foo.*)bar/ 我怎样才能写一个具有相同含义的正则expression式,但不使用lookbehind-assertion? 这种断言是否有可能在某一天实施? 我觉得事情好多了。 更新: (1)已经有支持变长lookbehind-assertion的正则expression式实现。 Python模块的正则expression式 (不是标准的,但额外的regex模块)支持这样的断言(并有许多其他很酷的function)。 >>> import regex >>> m = regex.search('(?<!foo.*)bar', 'f00bar') >>> print m.group() bar >>> m = regex.search('(?<!foo.*)bar', 'foobar') >>> print m None 对于我来说,有一些正则expression式是Perl无法做到的,而Python可以做到这一点,这真是一个非常大的惊喜。 也许,Perl的“增强的正则expression式”的实现呢? (感谢和+1对MRAB)。 (2)现代正则expression式中有一个很酷的function\K 这个符号意味着当你进行replace时(从我的观点来看,最有趣的断言使用情况就是replace),在\K之前find的所有字符都不能被改变。 s/unchanged-part\Kchanged-part/new-part/x 这几乎就像一个背后的断言,但当然不是那么灵活。 更多关于\K : Perl Regular Expression \ K Trick PCRE Regex Spotlight:\ K 据我所知,你不能在同一个正则expression式中使用\ K两次。 […]
我如何通过这个正则expression式匹配负数? 这个正则expression式可以正常工作,但我希望它也允许负值,例如-10,-125.5等 ^[0-9]\d*(\.\d+)?$ 谢谢
我还没有find一个很好的例子,如何使用PHP的RegexIteratorrecursion遍历目录。 最终的结果将是我想指定一个目录,并find一些给定的扩展名中的所有文件。 例如只说html / php扩展。 此外,我想过滤出types为.Trash-0,.Trash-500等文件夹。 <?php $Directory = new RecursiveDirectoryIterator("/var/www/dev/"); $It = new RecursiveIteratorIterator($Directory); $Regex = new RegexIterator($It,'/^.+\.php$/i',RecursiveRegexIterator::GET_MATCH); foreach($Regex as $v){ echo $value."<br/>"; } ?> 是我到目前为止,但导致:致命错误:未收到的exception'UnexpectedValueException'消息'RecursiveDirectoryIterator :: __构造(/media/hdmovies1/.Trash-0) 有什么build议么?
我想parsing一个hh:mm:ssstring。 简单的是([0-1]?\d|2[0-3]):([0-5]?\d):([0-5]?\d)其中2:3:24或02:03:24string。 我想更进一步,并通过validation,即使在像 如果你只input56,那应该是通过的,因为56可以被认为是56秒[SS] 如果您input2:3或02:03或02:3或2:03,则应通过。 2分3秒[MM:SS] 如果你进入20:30:12,20小时30分12秒[HH:MM:SS] 如果你input78:12,不通过78分钟是错误的…. 基本上,如果find一个“:”,把“:”之前的数字看作是MM中的数字,把“:”之后的数字看作SS。 如果两个“:”被认为是HH:MM:SS 我想出了这个模式。 (^([0-1]?\d|2[0-3]):([0-5]?\d):([0-5]?\d)$)|(^([0-5]?\d):([0-5]?\d)$)|(^[0-5]?\d$) 它似乎工作正常。 我想知道任何其他更简单的正则expression式,可以做这个工作。