Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用正则表达式匹配“;结束”;不允许有新线?_Python_Regex_Newline - Fatal编程技术网

Python 如何使用正则表达式匹配“;结束”;不允许有新线?

Python 如何使用正则表达式匹配“;结束”;不允许有新线?,python,regex,newline,Python,Regex,Newline,^abc$匹配字符串abc,但也匹配abc\n(带有尾随的换行符) 我怎么能让它只匹配没有换行符的字符串 (记住Python,但这应该是一个一般的正则表达式问题。)使用只在字符串末尾匹配的\Z而不是$ >>> re.match(r'^abc\Z', 'abc') <_sre.SRE_Match object at 0x02469560> >>> re.match(r'^abc\Z', 'abc\n') >>> 重新匹配(r'^a

^abc$
匹配字符串
abc
,但也匹配
abc\n
(带有尾随的换行符)

我怎么能让它只匹配没有换行符的字符串


(记住Python,但这应该是一个一般的正则表达式问题。)

使用只在字符串末尾匹配的
\Z
而不是
$

>>> re.match(r'^abc\Z', 'abc')
<_sre.SRE_Match object at 0x02469560>
>>> re.match(r'^abc\Z', 'abc\n')
>>>
重新匹配(r'^abc\Z',abc') >>>重新匹配(r'^abc\Z',abc\n') >>>
注意:这个答案具体取决于Python中
\Z
的含义。这个概念在其他正则表达式实现中是
\z
。您也可以使用否定的前瞻断言,但它的语法在不同的正则表达式实现中也有所不同。有关在Python中使用负前瞻断言的示例,请参见。

而不是
$
使用仅在字符串末尾匹配的
\Z

>>> re.match(r'^abc\Z', 'abc')
<_sre.SRE_Match object at 0x02469560>
>>> re.match(r'^abc\Z', 'abc\n')
>>>
重新匹配(r'^abc\Z',abc') >>>重新匹配(r'^abc\Z',abc\n') >>>
注意:这个答案具体取决于Python中
\Z
的含义。这个概念在其他正则表达式实现中是
\z
。您也可以使用否定的前瞻断言,但它的语法在不同的正则表达式实现中也有所不同。有关在Python中使用消极前瞻断言的示例,请参见。

我不知道这是否适用于Python中的正则表达式引擎,但您可以查看。。
您可以使用负向前看来查看\n是否在“abc”之后。

我不知道这是否适用于python中的正则表达式引擎,但您可以签出。。
您可以使用负前瞻查看\n是否在“abc”之后。

使用负前瞻确保没有
\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')
>>> 
PHP:


使用负前瞻以确保没有
\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')
>>> 
PHP:


这是一个消极的前瞻,因此如果它位于行的末尾,它将不会找到匹配项,而是在其他任何地方

>>> re.search('abc(?!\n)','abc\n')
>>> re.search('abc(?!\n)','abc')
<_sre.SRE_Match object at 0x103eceac0>
重新搜索('abc(?!\n'),'abc\n') >>>重新搜索('abc(?!\n'),'abc')
这是一个消极的前瞻,因此如果它在行的末尾,它将不会找到匹配项,而是在其他任何地方

>>> re.search('abc(?!\n)','abc\n')
>>> re.search('abc(?!\n)','abc')
<_sre.SRE_Match object at 0x103eceac0>
重新搜索('abc(?!\n'),'abc\n') >>>重新搜索('abc(?!\n'),'abc')
根据您的需要,
'abc\n'。strip()
可能是使用
\Z
的一个有用的替代方法。当您说应该是一个通用正则表达式问题时,您的意思是使用多种风格的正则表达式吗?根据您的需要,
'abc\n'。strip()
可能是使用
\Z
的有用替代方法。当您说应该是一个一般正则表达式问题时,您的意思是在多种类型的正则表达式中吗?这也与
'abcwtf'
'wtfabc'
匹配。从我对问题的理解来看,这两个都不需要。OP中哪里错了?需要澄清。OP使用
$
尝试匹配字符串的结尾。这也匹配
'abcwtf'
'wtfabc'
。从我对问题的理解来看,这两个都不需要。OP中哪里有错?需要澄清。OP使用
$
尝试匹配字符串的结尾。如果OP旨在查找字符串的开头和结尾,则应该是“\Aabc\Z”。否则,仅当它位于行上的唯一对象时,它才会匹配。
\Z
\Z
在不同的正则表达式引擎中有很大的变化。请看,这在Python中并不总是在正则表达式中或正则表达式的风格中起作用。具体地说,在Java、PCRE、.NET中,
\Z
在最后一个(但不包括)
\n
之前匹配,因此这与其他语言的要求相反。在其他语言中,你会使用一个
\z
消极的前瞻是一个更不可知平台的问题。@StevenRumbalski:Quoting:(考虑到Python,但这应该是一个一般的正则表达式问题。)@Pyson:我把它理解为“我想要一个Python解决方案,但任何了解正则表达式的人都可以回答这个问题。”而你把它理解为“我想要一个跨语言工作的正则表达式。“谢谢。但问题更大:
\Z
是Python独有的,有些人会说它完全崩溃了。大多数人将
\Z
视为Perl中的“字符串结尾,忽略行终止符”。在Python中正好相反。我删除了dv tho。如果OP用于查找字符串的开头和结尾,那么它应该是“\Aabc\Z”。否则,仅当它位于行上的唯一对象时,它才会匹配。
\Z
\Z
在不同的正则表达式引擎中有很大的变化。请看,这在Python中并不总是在正则表达式中或正则表达式的风格中起作用。具体地说,在Java、PCRE、.NET中,
\Z
在最后一个(但不包括)
\n
之前匹配,因此这与其他语言的要求相反。在其他语言中,你会使用一个
\z
消极的前瞻是一个更不可知平台的问题。@StevenRumbalski:Quoting:(考虑到Python,但这应该是一个一般的正则表达式问题。)@Pyson:我把它理解为“我想要一个Python解决方案,但任何了解正则表达式的人都可以回答这个问题。”而你把它理解为“我想要一个跨语言工作的正则表达式。”谢谢。不过问题更大:
\Z
是Python独有的,有些人会说它完全崩溃了。大多数人把
\Z
看作是Perl中的“字符串结束,忽略行终止符”。这在Python中正好相反。我删除了我的dv-tho。我认为
/^abc(?![\s\s])/
更好、更地道的正则表达式。也适用于较旧的正则表达式。我认为
/^abc(?![\s\s])/
更好、更地道的正则表达式。也适用于较旧的正则表达式。