正则表达式保证失败

我想使用集合和正则表达式来实现一些 语言思想. 用符号和属性表示声音 (冠状或丝绒发音;发音),通过一组符号 这些属性,很自然地映射这些集合,并且 它们的交集,以适用于字符串的正则表达式. 问题是,什么正则表达应与 空套? 我暂时使用"(?!.*)",即否定 与任何事物相匹配的外观. 有没有建立的习语 为此,是吗? 如果没有,这似乎是 合理的? 示例代码: """ 导入集 def str2set(s):return sets.sets.set(s.split()) cor = str2Set(" n d t")#冠状发音 vel = str2set(" k g")#velar铰接 voi = str2set(" n d g")#配音 def set2re(s): 如果s:返回" |" .join([e in s in s])) 否则:返回"(?!.*)" """ 因此,我们可以获得匹配与符号相对应的符号的REGEXP(字符串) Velar和声音: """ =>'(?!.*)' """ 这对我来说似乎很优雅,但是之间有一条很好的界限 优雅和怪异,我很高兴知道其他方面 人们认为我在这里. des - - "语言学的结构趋势,与 二十多岁和三十多岁的国际大会[...] 与现象学在其侯赛利亚人的亲密有效的联系 和黑格尔的版本." - 罗马·雅各布森

# 回答1

des Small写道: 几天前,我还寻找了一个从未匹配的RE,最终结果 "^(?!$)$". 当然,它比您的"标准"还多,但我觉得它是一个wee TAD更可读性(我的意思是正式表达...):很明显 它要求启动一个字符串,然后是字符串末端,然后是字符串 结束,保证永远不会发生. 您的解释很难解释. 矿 对于很长的字符串来说,也可能更有效,但是我在这里可能是错误的. 看看别人的想法... - - - 埃里克·布鲁内尔(Eric Brunel pragmadev:实时软件开发工具-http://www.pragmadev.com
# 回答2

2004年8月20日星期五10:35:18 +0000,des Small写道: 我会返回编译的RE对象而不是字符串,然后在空中 案例,返回您编写的类,该类匹配编译的RE的接口 但是返回您喜欢的东西. 就像是: DEF NEVERMATCH(对象): def匹配(*args,** kwargs): 没有返回 def set2re(s): 如果s:return re.compile(" |" .join([e in s in s])) elte:return novermatch()
# 回答3

埃里克·布鲁内尔(Eric Brunel)写道: 我认为 r'\ zx'和r'x \ a'更可读. 特别是 后者,但也许会导致python在字符串中找到每个" x" 然后检查字符串是否在下一个字符... - - 霍尔瓦德
# 回答4

2004年8月22日20:07:51 +0200,Hallvard B Furuseth 写道:我认为 r'\ zx'和r'x \ a'更可读. 特别是Thelatter,但也许是 使用python在字符串和字符串中找到每个" x",然后检查字符串是否在下一个字符上开始... 为什么不只是"(?!)":这总是立即失败(因为一个空模式 匹配任何字符串,空模式匹配的否定总是失败). --- 格雷格·查普曼
# 回答5

格雷格·查普曼(Greg Chapman)写道:我认为 r'\ zx'和r'x \ a'更可读. 尤其是后者,但也许会导致python在字符串中找到每个" x",然后检查字符串是否在Nextcharacter处启动...为什么不只是"(?!!)":这总是立即失败(因为空模式匹配了一个空模式 任何字符串,空模式匹配的否定总是失败). 我认为我们有赢家! des 当然,感谢所有贡献的人. - - "语言学的结构趋势,与 二十多岁和三十多岁的国际大会[...] 与现象学在其侯赛利亚人的亲密有效的联系 和黑格尔的版本." - 罗马·雅各布森
# 回答6

格雷格·查普曼(Greg Chapman)写道: 重新匹配很好. "为什么不呢?":因为我希望re.Search能够遍历整个 字符串并检查字符串中的每个位置是否匹配regexp. 不幸的是,一些时间表明,这种情况发生在_every_ 到目前为止,REGEXP建议. 它们每个人都需要更长的时间. (当然,除了杰里米的解决方案,这避免了整个问题.) r'\ a(?!)'或r'\ ax \ a'也无法正常工作. 无论如何,我注意到r'x \ a击败了到目前为止建议的所有其他提议 搜索" S'*10000时,有20倍. - - 霍尔瓦德
# 回答7

Hallvard B Furuseth写道: 重新匹配很好. "为什么不呢?":因为我希望re.Search浏览整个字符串,并检查字符串中的每个位置是否匹配RegexP. 不幸的是,一些时间表明,到目前为止,_every_ Regexp建议发生这种情况. 它们每个人都需要更长的时间. (当然,除了杰里米的解决方案外,还避免了整个问题.)r'\ a(?!)'或r'\ ax \ a'也无法正常工作. 无论如何,我注意到r'x \ a'击败了迄今为止建议的所有其他正格,在搜索's'*10000时,击败了20倍. 在搜索" X'*10000? 由于RE中有一个" X",它可能会改变 事情很多... - - - 埃里克·布鲁内尔(Eric Brunel pragmadev:实时软件开发工具-http://www.pragmadev.com
# 回答8

埃里克·布鲁内尔(Eric Brunel)写道:搜索'x'*10000? 由于RE中有一个" X",因此它可能会发生很多变化... 嘿. 您是对的:那几乎和其他人一样慢. 一点点 比\ zx和\ ax \ a慢,但仍然比其他替代方案快. - - 霍尔瓦德

标签: python

添加新评论