我试图在字符串"8ab|ab8"中查找特定模式"8ab8"的所有匹配项。因此,我尝试了R命令gregexpr("8ab|ab8","8ab8"),希望得到一个以c(1,2)开头位置的返回向量。
不幸的是,所发生的事情似乎是,一旦第一个模式匹配,字符串的这一部分被“删除”,第二个模式将不会匹配。
例如,一旦"8ab“匹配,"8ab8”变为"8",当R尝试匹配"8“中的"ab8”时,将找不到模式。我知道这一点,因为gregexpr("8ab|ab8","8ab a
我对grep的regex和perl的regex的不同之处有一个问题。考虑下面的小测试:
$ cat testfile.txt
A line of text
SOME_RULE = $(BIN)
Another line of text
$ grep "SOME_RULE\s*=\s*\$(BIN)" testfile.txt
SOME_RULE = $(BIN)
$ perl -p -e "s/SOME_RULE\s*=\s*\$(BIN)/Hello/g" testfile.txt
A line of text
SOME_RULE = $(BIN)
A
我正在使用PostgreSQL中的dataset,它很快就会乱糟糟的。我编写了一些regex操作,以便在表的记录中找到日期模式。由于我没有为查找任何类型的日期模式定义的通用REGEX,所以,我使用数据库中的一些示例创建了一些示例,如:
9/18/2010 6:17:00 AM
05/21/2014
Date 2008-02-13
7/18/2016 9:54 PM
2000-04-20
Booked:1/16/2011 6:45:00 AM (2008-09-01 12:35:45 )
on January 3, 2008
on July 3, 2002
23 Mar 2017
我在通过perldoc perlre阅读时,注意到了这句有点有趣的话:
o - pretend to optimize your code, but actually introduce bugs
我搜索了文档的其余部分,但没有找到对提到的“bug”的另一种敬意。
有人知道使用/o标志的错误是什么吗?
我的理解是,Java的正则表达式实现是基于Perl的,然而,在下面的示例中,如果我用相同的字符串执行相同的正则表达式,Java和Perl将返回不同的结果。
下面是Java示例:
public class RegexTest {
public static void main( String args[] ) {
String sentence = "This is a test of regular expressions.";
System.out.println( sentence.matches( "\\w" ) ?
另一个的答案包括一个这种格式的正则表达式。
# match any year
([0-9]{4})
(
# January-September
(?:0[1-9])
# OR October - December
|(?:1[0-2])
)
(
# First nine days of the month.
(?:0[1-9])
# Next twenty days of the month.
|(?:[1-2][0-9])
# Last two days of the month.
|(?:3[0-1])
)
# A hyphen and then a
我一直在慢慢地把我的博客转换成降价。最后要做的事情是用标记替换所有html锚。
我已经想出了sed正则表达式,对于所有的意图和目的,它都应该做我想做的事情,但是它没有。
来源数据:
$ cat /tmp/test
on reddit or Lifehacker
Sed命令:
$ sed -r 's/(.*?)<\/a>/[\2](\1)/g' /tmp/test
on [Lifehacker](https://lifehacker.com/" target="_blank" rel="noopener)
我想要的是:
on [Redd
我注意到跨多行匹配的标准正则表达式语法是使用/s,如下所示:
This is\nsome text
/This.*text/s
例如,这在Perl中可以工作,但在Vim中似乎不受支持。相反,我必须说得更具体一些:
/This[^\r\n]*[\r\n]*text/
我找不到任何理由来解释为什么会这样,所以我想我可能只是错过了vim帮助中的相关部分。
有人能以这种或那种方式证实这种行为吗?