我试图弄清楚如何压缩我需要创建的模式匹配规则的数量,以适应我在派克街西南角看到一个人的情况。对于“SW Corner”,我不想为每个方向变化(N、S、E、W 等)编写匹配规则。我试图用下面的方法来做,但这是不对的。嗯,它可以工作,但它也可以处理其他事情。
例子:
matcher.add("DIRECTION", None,
[{}, {"TEXT":{"REGEX":"(?:N)|(?:S)|(?:E)|(?:W)|(?:NW)|(?:NE)|(?:SW)|(?:SE)"}}, {"LOWER":"corner"}]
)
我希望能够使用 OR 语句,但我不确定如何使用单字符或双字符(N、S、E、W、NW、NE、SW、SE)来做到这一点。我究竟做错了什么?
最佳答案
不要过度使用非捕获组,(?:SW)
与 SW
相同.
另外,您不想匹配 SE
在 SED
token ,使用 anchor ,^
和 $
.
用
{"REGEX":"^(?:N|S|E|W|NW|NE|SW|SE)$"}
见 proof .不区分大小写的变体:
{"REGEX":"(?i)^(?:N|S|E|W|NW|NE|SW|SE)$"}
说明--------------------------------------------------------------------------------
^ the beginning of the string
--------------------------------------------------------------------------------
(?: group, but do not capture:
--------------------------------------------------------------------------------
N 'N'
--------------------------------------------------------------------------------
| OR
--------------------------------------------------------------------------------
S 'S'
--------------------------------------------------------------------------------
| OR
--------------------------------------------------------------------------------
E 'E'
--------------------------------------------------------------------------------
| OR
--------------------------------------------------------------------------------
W 'W'
--------------------------------------------------------------------------------
| OR
--------------------------------------------------------------------------------
NW 'NW'
--------------------------------------------------------------------------------
| OR
--------------------------------------------------------------------------------
NE 'NE'
--------------------------------------------------------------------------------
| OR
--------------------------------------------------------------------------------
SW 'SW'
--------------------------------------------------------------------------------
| OR
--------------------------------------------------------------------------------
SE 'SE'
--------------------------------------------------------------------------------
) end of grouping
--------------------------------------------------------------------------------
$ before an optional \n, and the end of the
string
关于python正则表达式或单个字符与spacy模式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65500808/