我确信之前一定要问过,但由于某些原因,在档案中找到正则表达式问题的答案对我来说特别困难.
我想从字符串的末尾开始做一个lookbehind.
示例字符串:
"This is a string with lots of white space_and-other.stuff"
Run Code Online (Sandbox Code Playgroud)
我只想要字符串中具有最后一个空格的部分.到目前为止,我有以下内容:
(?<=\s).+$
Run Code Online (Sandbox Code Playgroud)
这给了我第一个空格后的所有内容,即使我匹配字符串的结尾.我的问题根源必须与lookbehinds必须是预定义数量的字符有关,但我不知道怎么做没有lookbehind.
这个关于正则表达式可维护性问题的答案提到了.NET用户在正则表达式中实现注释的能力(我对第二个例子特别感兴趣)
有没有一种简单的原生方式在python中重现这个,最好不需要安装第三方库或编写我自己的注释条算法?
我目前所做的与该答案中的第一个示例类似,我将多个行中的正则表达式连接起来并对每一行进行注释,如下例所示:
regexString = '(?:' # Non-capturing group matching the beginning of a comment
regexString += '/\*\*'
regexString += ')'
Run Code Online (Sandbox Code Playgroud) 什么是访问的复杂性String
与index
在swift
3.0吗?
复杂性是否与数组访问或 O(N) 或其他东西相同?
从“字符串索引”下的文档中:
let greeting = "Guten Tag!"
let index = greeting.index(greeting.startIndex, offsetBy: 7)
greeting[index]
.
.
.
for index in greeting.characters.indices {
print("\(greeting[index]) ", terminator: "")
}
// Prints "G u t e n T a g ! "
Run Code Online (Sandbox Code Playgroud)
如果索引访问是 O(N),那么最后一个示例(遍历字符)将非常糟糕,因为仅以这种方式遍历字符将是 O(n^2)
我不确定的原因是以下声明:“不同的字符 [...] 可能需要不同数量的内存来存储”。
如果复杂度不是 O(n),那么它是如何工作的,因为不能只是将偏移量乘以常数来获得内存中的字符?
如何"""
在原始 python 字符串中进行编码?
以下似乎不起作用:
string = r"""\"\"\""""
Run Code Online (Sandbox Code Playgroud)
因为当尝试与正则表达式匹配时"""
,我必须对字符进行双重转义"
:
返回一个空列表:
string = r"""\"\"\""""
regEx = re.compile(r"""
(\"\"\")
""", re.S|re.X)
result = re.findall(regEx, string)
Run Code Online (Sandbox Code Playgroud)
在这种情况下,结果是一个空列表。['"""']
当我从文件内容加载字符串时,会返回相同的正则表达式"""
。
返回双转义引号:
string = r"""\"\"\""""
regEx = re.compile(r"""
(\\"\\"\\")
""", re.S|re.X)
result = re.findall(regEx, string)
Run Code Online (Sandbox Code Playgroud)
现在结果等于['\\"\\"\\"']
. 它希望它等于['"""']
。