- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
以下打印“pass”:
pattern = Word(alphanums) + StringEnd()
str=" bar "
results = pattern.parseString(str)
if 1 == len(results) && "bar" == results[0] :
print("pass")
else:
print("fail")
但这会在 class StringEnd
的 parseImpl
中抛出异常(当“bar”中“r”后面的字符不是字符串结尾时):
pattern = Word(alphanums) + StringEnd()
str=" bar foo "
results = pattern.parseString(str) # <-- exception raised
就像这样:
pattern = Word(alphanums)
str = " bar foo"
results = pattern.parseString(str,parseAll=True)
我希望第二/第三个 parseString 调用只返回一个空数组,因为它显然不满足语法。
谁能帮我理解为什么?
(应该是显而易见的,但要运行你需要“from pyparsing import *”;我也使用 python3.2 和 pyparsing 1.5.6)
最佳答案
当您在语法上调用 parseString
时,您是在告诉它“使用此语法从头开始解析此字符串”。它必须匹配某些内容,否则会引发异常。当您使用 parseAll=True
时,这一点更加正确。您说的是“将整个字符串与此语法进行匹配”。如果不全部匹配,则出现错误。 parseString
不是一种“可选”类型的匹配,如果您尝试匹配错误的语法,它只会默默地失败。如果某些内容“显然与语法不匹配”,那么正是它应该引发错误的时候。
您可能想尝试 searchString
。这将只查找字符串中的所有匹配项,无论它们在哪里:
>>> pattern = pyp.Word(pyp.alphanums)
>>> pattern.searchString(" bar foo ")
([([u'bar'], {}), ([u'foo'], {})], {})
关于python - 当匹配失败时 StringEnd() 引发异常 - PyParsing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11546836/
以下打印“pass”: pattern = Word(alphanums) + StringEnd() str=" bar " results = pattern.parseString(str) i
我正在尝试通过以下测试: from pyparsing import Word, nums, StringStart, StringEnd import pytest def get_square_f
我是一名优秀的程序员,十分优秀!