python正则表达式或单个字符与spacy模式匹配

标签 python regex spacy

我试图弄清楚如何压缩我需要创建的模式匹配规则的数量,以适应​​我在派克街西南角看到一个人的情况。对于“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 相同.
另外,您不想匹配 SESED 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/

相关文章:

python - 何时在 Tensorflow 模型保存中使用 .ckpt、.hdf5 和 .pb 文件扩展名?

php - 正则表达式反向引用非捕获组?

javascript - 检查输入的格式和值

python - 有没有办法使用 SpaCy 获取整个成分?

python - 拍卖脚本(从文件输入到字典)

python - BigQuery Load 作业的无架构解决方案

python - 使用 pycurl 暂停和恢复下载

javascript - Javascript正则表达式将新行添加到匹配项中

python - 使用 SpaCy 和 Python 创建基于规则的匹配以检测地址

python - 如何使用 python 最好地将语法复杂的文本转换为语法简单的文本?