首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RegEx字符串在PostgreSQL中直接分配时工作,但不是从PostgreSQL数据库中分配的。

RegEx字符串在PostgreSQL中直接分配时工作,但不是从PostgreSQL数据库中分配的。
EN

Stack Overflow用户
提问于 2018-06-11 09:02:01
回答 1查看 140关注 0票数 0

我有一个工作程序来确定新闻项目所属的类别。当在Python中为标题、类别、子类别和搜索单词赋值为RegExp时,该例程起作用。

但是,当以字符串的形式从PostgreSQL检索这些值时,我不会收到任何错误,也不会从同一个例程中得到任何结果。

我检查了数据类型,它们都是Python字符串。

怎样才能解决这个问题呢?

代码语言:javascript
复制
# set the text to be analyzed
title = "next week there will be a presentation. The location will be aat"

# these could be the categories
category = "presentation"
subcategory = "scientific"

# these are the regular expressions
main_category_search_words = r'\bpresentation\b'
sub_category_search_words= r'\basm microbe\b | \basco\b | \baat\b'

category_final = ''
subcategory_final = ''

# identify main category
r = re.compile(main_category_search_words, flags=re.I | re.X)
result = r.findall(title)

if len(result) == 1:
    category_final = category

    # identify sub category
    r2 = re.compile(sub_category_search_words, flags=re.I | re.X)
    result2 = r2.findall(title)
    if len(result2) > 0:
        subcategory_final = subcategory

print("analysis result:", category_final, subcategory_final)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-11 09:15:58

我很确定从PostgreSQL中得到的不是raw string literal,因此您的RegEx是无效的。您必须在DB中显式地转义模式中的反斜杠。

代码语言:javascript
复制
print(r"\basm\b")
print("\basm\b")
print("\\basm\\b")

# output
\basm\b

as       # yes, including the line break above here
\basm\b
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50793945

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档