[英]How can I use regex to match “the end” without allowing a newline there?
^abc$
匹配字符串abc
,但也匹配abc\\n
(以換行符結尾)。
如何讓它只匹配沒有換行符的字符串?
(牢記Python,但應該是一般的正則表達式問題。)
使用否定的前瞻性確保沒有\\n
:
>>> re.search(r'^abc(?!\n)$', s1)
>>> re.search(r'^abc(?!\n)$', s2)
<_sre.SRE_Match object at 0x10a716a58>
>>> re.search(r'^abc(?!\n)$', 'abcdefg')
>>>
在大多數其他現代正則表達式中,它們的作用相同。
Perl:
DB<11> print 'match' if "abc\n" =~ /^abc(?!\n)$/
DB<12> print 'match' if "abc" =~ /^abc(?!\n)$/
match
紅寶石:
irb(main):031:0> "abc"[/^abc(?!\n)$/]
=> "abc"
irb(main):032:0> "abc\n"[/^abc(?!\n)$/]
=> nil
PHP:
$ php -r 'print preg_match("/^abc(?!\n)$/", "abc\n");'
0
$ php -r 'print preg_match("/^abc(?!\n)$/", "abc");'
1
這是一個否定的前瞻性,因此,如果它在行的末尾但在其他任何地方,都將找不到匹配項。
>>> re.search('abc(?!\n)','abc\n')
>>> re.search('abc(?!\n)','abc')
<_sre.SRE_Match object at 0x103eceac0>
我不知道這是否適用於python中的regex引擎,但是您可以簽出。 負面\\正面展望 。 您可以使用否定的前瞻來查看\\ n是否在“ abc”之后。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.