Python 捕获反斜杠的正则表达式

Python 捕获反斜杠的正则表达式,python,regex,Python,Regex,我知道有反斜杠帖子,但他们的建议对我不起作用。 我试图捕捉主题之后的一切:以及公司(见下文) 我正在使用这个代码。注意双反斜杠\。但是我的正则表达式输出停止了 因为“CHI Children”中的反斜杠,所以使用CHI Children。我该怎么处理这个不想被抓住的反斜杠 indextext = re.findall(r'SUBJECT:\s+[A-Z\s\(\w+\%\)\;\&\:\-\,\/\\]+', udoc2)[0] indextext = re.sub(r'\r\n','\

我知道有反斜杠帖子,但他们的建议对我不起作用。 我试图捕捉主题之后的一切:以及公司(见下文)

我正在使用这个代码。注意双反斜杠\。但是我的正则表达式输出停止了 因为“CHI Children”中的反斜杠,所以使用CHI Children。我该怎么处理这个不想被抓住的反斜杠

indextext = re.findall(r'SUBJECT:\s+[A-Z\s\(\w+\%\)\;\&\:\-\,\/\\]+', udoc2)[0]
indextext = re.sub(r'\r\n','\n', indextext)
更新:
我无法预先指定“COMPANY:”的原因是每个文档都有不同的单词。有时公司并不存在。我将被迫硬编码几十个异常

udoc = [SUBJECT: ENTREPRENEURSHIP (93%); PRESS RELEASES (91%); NUTRITION (90%); STUDENTS\r\n& STUDENT LIFE (90%); PREVENTION & WELLNESS (90%); EXERCISE & FITNESS (90%);\r\nVENTURE CAPITAL (90%); NONPROFIT ORGANIZATIONS (90%); COMPUTER SOFTWARE (85%);\r\nCHILDREN (78%); PUBLIC PRIVATE PARTNERSHIPS (78%); CHARITIES (78%); SPONSORSHIP\r\n(78%); FOUNDATIONS (78%); PHILANTHROPY (78%); EDUCATION SYSTEMS & INSTITUTIONS\r\n(78%); ALLIANCES & PARTNERSHIPS (77%); ENTERTAINMENT & ARTS (77%); PRODUCT\r\nINNOVATION (77%); WORKPLACE PROGRAMS (77%); SPORTS & RECREATION EVENTS (74%);\r\nSPORTS FANS (74%); AMERICAN FOOTBALL TOURNAMENTS (74%); LICENSING AGREEMENTS\r\n(74%); AMERICAN FOOTBALL (74%); SPORTS (74%); AGRICULTURE DEPARTMENTS (73%);\r\nLABOR FORCE (70%); EXECUTIVES (70%); BUSINESS ANALYTICS (67%); BUSINESS SOFTWARE\r\n(62%) NY-GENYOUth-SAP; CHI Children\'s Related News; LIC Licensing and Marketing\r\nAgreements\r\n\r\nCOMPANY:]
电流输出:

SUBJECT: ENTREPRENEURSHIP (93%); PRESS RELEASES (91%); NUTRITION (90%); STUDENTS & STUDENT LIFE (90%); PREVENTION & WELLNESS (90%); EXERCISE & FITNESS (90%); VENTURE CAPITAL (90%); NONPROFIT ORGANIZATIONS (90%); COMPUTER SOFTWARE (85%); CHILDREN (78%); PUBLIC PRIVATE PARTNERSHIPS (78%); CHARITIES (78%); SPONSORSHIP (78%); FOUNDATIONS (78%); PHILANTHROPY (78%); EDUCATION SYSTEMS & INSTITUTIONS (78%); ALLIANCES & PARTNERSHIPS (77%); ENTERTAINMENT & ARTS (77%); PRODUCT INNOVATION (77%); WORKPLACE PROGRAMS (77%); SPORTS & RECREATION EVENTS (74%); SPORTS FANS (74%); AMERICAN FOOTBALL TOURNAMENTS (74%); LICENSING AGREEMENTS (74%); AMERICAN FOOTBALL (74%); SPORTS (74%); AGRICULTURE DEPARTMENTS (73%); LABOR FORCE (70%); EXECUTIVES (70%); BUSINESS ANALYTICS (67%); BUSINESS SOFTWARE (62%) NY-GENYOUth-SAP; CHI Children
为什么不:

import re
re.search(r'SEARCH:(.+)COMPANY:', udoc2)
为什么不:

import re
re.search(r'SEARCH:(.+)COMPANY:', udoc2)

您不必为此使用正则表达式。在这种情况下,似乎有一个更简单的解决方案


为什么不把索引改为“COMPANY:”,然后把所有的东西都改成这个呢?

你不必用正则表达式来做这个。在这种情况下,似乎有一个更简单的解决方案

为什么不把“COMPANY:”的索引列出来,然后把所有的东西都列出来呢?

这个怎么样

(SUBJECT\:.*\:)
你可以在

上看到它的工作原理。这个怎么样

(SUBJECT\:.*\:)

你可以在

上看到它是如何工作的。你不是第一个在这里大发雷霆的人

您需要4个反斜杠来转义目标字符串中的反斜杠

也就是说,我喜欢使用交互式工具来完善regex,比如regexcoach

如果您不想做愚蠢的4个反斜杠,请从外部工具复制并使用re.compile(re.escape(string))


你不是第一个在这里碰头的人

您需要4个反斜杠来转义目标字符串中的反斜杠

也就是说,我喜欢使用交互式工具来完善regex,比如regexcoach

如果您不想做愚蠢的4个反斜杠,请从外部工具复制并使用re.compile(re.escape(string))


你的问题有点模糊,所以我不能完全确定你在找什么

udoc = "SUBJECT: ENTREPRENEURSHIP (93%); PRESS RELEASES (91%); NUTRITION (90%); STUDENTS\r\n& STUDENT LIFE (90%); PREVENTION & WELLNESS (90%); EXERCISE & FITNESS (90%);\r\nVENTURE CAPITAL (90%); NONPROFIT ORGANIZATIONS (90%); COMPUTER SOFTWARE (85%);\r\nCHILDREN (78%); PUBLIC PRIVATE PARTNERSHIPS (78%); CHARITIES (78%); SPONSORSHIP\r\n(78%); FOUNDATIONS (78%); PHILANTHROPY (78%); EDUCATION SYSTEMS & INSTITUTIONS\r\n(78%); ALLIANCES & PARTNERSHIPS (77%); ENTERTAINMENT & ARTS (77%); PRODUCT\r\nINNOVATION (77%); WORKPLACE PROGRAMS (77%); SPORTS & RECREATION EVENTS (74%);\r\nSPORTS FANS (74%); AMERICAN FOOTBALL TOURNAMENTS (74%); LICENSING AGREEMENTS\r\n(74%); AMERICAN FOOTBALL (74%); SPORTS (74%); AGRICULTURE DEPARTMENTS (73%);\r\nLABOR FORCE (70%); EXECUTIVES (70%); BUSINESS ANALYTICS (67%); BUSINESS SOFTWARE\r\n(62%) NY-GENYOUth-SAP; CHI Children\'s Related News; LIC Licensing and Marketing\r\nAgreements\r\n\r\nCOMPANY:"
请注意从列表到字符串的更改

在我看来你在寻找冒号之间的一切

s = udoc.split(':')[1]
然后,您可能需要处理各个项目

mylist = [item for item in s.split(';')]
把它们清理一下

newlist = []
for item in mylist:
    newlist.append(' '.join(item.split()))
你可以通过一些简单的操作来摆脱最后一个词(在这种情况下是公司)

newlist[-1] = ' '.join(newlist[-1].split()[:-1])

最后,如果您想将结果作为字符串,只需使用一些分隔符连接newlist,您的问题有点模糊,因此我不能完全确定您在寻找什么

udoc = "SUBJECT: ENTREPRENEURSHIP (93%); PRESS RELEASES (91%); NUTRITION (90%); STUDENTS\r\n& STUDENT LIFE (90%); PREVENTION & WELLNESS (90%); EXERCISE & FITNESS (90%);\r\nVENTURE CAPITAL (90%); NONPROFIT ORGANIZATIONS (90%); COMPUTER SOFTWARE (85%);\r\nCHILDREN (78%); PUBLIC PRIVATE PARTNERSHIPS (78%); CHARITIES (78%); SPONSORSHIP\r\n(78%); FOUNDATIONS (78%); PHILANTHROPY (78%); EDUCATION SYSTEMS & INSTITUTIONS\r\n(78%); ALLIANCES & PARTNERSHIPS (77%); ENTERTAINMENT & ARTS (77%); PRODUCT\r\nINNOVATION (77%); WORKPLACE PROGRAMS (77%); SPORTS & RECREATION EVENTS (74%);\r\nSPORTS FANS (74%); AMERICAN FOOTBALL TOURNAMENTS (74%); LICENSING AGREEMENTS\r\n(74%); AMERICAN FOOTBALL (74%); SPORTS (74%); AGRICULTURE DEPARTMENTS (73%);\r\nLABOR FORCE (70%); EXECUTIVES (70%); BUSINESS ANALYTICS (67%); BUSINESS SOFTWARE\r\n(62%) NY-GENYOUth-SAP; CHI Children\'s Related News; LIC Licensing and Marketing\r\nAgreements\r\n\r\nCOMPANY:"
请注意从列表到字符串的更改

在我看来你在寻找冒号之间的一切

s = udoc.split(':')[1]
然后,您可能需要处理各个项目

mylist = [item for item in s.split(';')]
把它们清理一下

newlist = []
for item in mylist:
    newlist.append(' '.join(item.split()))
你可以通过一些简单的操作来摆脱最后一个词(在这种情况下是公司)

newlist[-1] = ' '.join(newlist[-1].split()[:-1])
最后,如果您想将结果作为字符串,只需使用一些分隔符加入newlist即可

我的大警告: 我不喜欢你的方法,所以我把它扔出窗外。你最不想做的事情就是在你等待处理一些事情的时候,使用正则表达式来匹配大量的事情。这与正则表达式应该做的恰恰相反:所以你也不要这样做

我最大的假设是: 我对你的代码玩了很长一段时间,试图弄清楚你到底想做什么以及为什么。在我看来,你试图以某种方式对这些价值进行索引,比如
{“企业家精神”:93,“新闻稿”:91,…}
,这就是我构建的。也许这不是你的最终目标,在这种情况下,jeebus brother会在这里给我们一些反馈

我的小码: 现在我知道你在说什么了,“adsmith”,你开始说,“但是看看“CHI儿童相关”和“商业软件(62%)中的价值观”,这显然是错误的

我无法避免你的输入格式错误,没有人可以。
CHI Children's Related
的值为
News
,这不是你的错,也不是我的错。他们忽略了在
商业软件
(62%)
之间加上一个
,我们对此也不承担任何责任

结论 再想一想,让我们不要去
re
模块。这是一个愚蠢的地方。

我的大警告: 我不喜欢你的方法,所以我把它扔出窗外。你最不想做的事情就是在你等待得到一些东西的时候,使用正则表达式来匹配大量的东西。这与正则表达式应该做的恰恰相反:所以你也不要这样做

我最大的假设是: 我对你的代码玩了很长一段时间,试图弄清楚你到底想做什么以及为什么。在我看来,你似乎试图以某种方式对这些价值进行索引,比如
{“企业家精神”:93,“新闻稿”:91,…}
,所以这就是我构建的。也许这不是你的最终目标,在这种情况下,jeebus brother会在这里给我们一些反馈

我的小码: 现在我知道你在说什么了,“adsmith”,你开始说,“但是看看“CHI儿童相关”和“商业软件(62%)中的价值观”,这显然是错误的

我无法帮助你的输入格式错误,没有人可以
CHI Child's Related
的值为
News
,这不是你的错,也不是我的错。他们忽略了在
商业软件
(62%)
之间加上一个
,对此我们也不承担责任

结论
再想一想,我们不要再去
re
模块了这是一个愚蠢的地方。

我不能预先指定“公司”的原因是因为每个文档都有不同的单词。有时公司并不存在。我将被迫硬编码几十个异常。好的,考虑到这一点,有没有任何理由不能让它找到“]”之前最后一个“\n”的索引并提取到那里的所有数据?我认为这将有助于解决这个特定问题,但我的问题指向了一个更大的问题——我不知道如何处理反斜杠,即使是在浏览完