2024-04-17 19:38:11 发布
网友
我试着用regex split把一个段落分成句子,我试着用这里发布的第二个答案: a Regex for extracting sentence from a paragraph in python
但是我有一个缩略语的列表,我不想在句子结尾处加句号。但我不知道如何正确地将它附加到正则表达式中。我正在读一个文件中的缩写词,其中包含了像St.女士这样的术语(每行一个)。在
简短回答:除非所有的lookhewbed断言都具有相同的固定宽度(在您的例子中它们可能不在其中;您的示例只包含两个字母缩写,但是^{cd1>}将破坏regex)。
这是当前Python正则表达式引擎的限制。
更长的答案:
您可以编写类似于^{cd2>}的regex,根据需要用尽可能多的^{{cd3>}填充lookhe后断言的每个交替部分,以使所有这些断言的宽度相同。然而,在某些情况下,例如当段落以^{{cd4>}开头时,这将失败。
不管怎样,你这里没有使用正确的工具。最好使用为作业设计的工具,例如Natural Language Toolkit。
如果你被雷格克斯缠住了(太糟了!),然后您可以尝试使用^{{cd5>}方法,而不是^{{cd6>}:
(?:(?:\b(?:Mr|Ms|Dr|Mrs|St)\.)|[^.])+\.\s*
将匹配以^{{cd3>}(可选地后跟空格)结尾的句子,并且除非前面有一个允许的缩写,否则可能不包含任何点。
我不直接回答您的问题,但这篇文章应该包含足够的信息,以便您为您的问题编写一个有效的正则表达式。
你可以附加一个负面表情列表。记住,look behind是零宽度,这意味着您可以将任意多个look behind放置在彼此相邻的位置,并且您仍然从相同的位置向后看。只要你不需要使用“many”量词(例如*,+,{n,})在后面看,一切都应该是好的(?)。在
*
+
{n,}
所以正则表达式可以这样构造:
(?<!list )(?<!of )(?<!words )(?<!not )(?<!allowed )(?<!to )(?<!precede )pattern\w+
有点太冗长了。不管怎样,我写这篇文章只是为了证明在一个固定字符串的列表后面查找是可能的。在
示例运行:
不过,使用look-behind有一个缺点。如果黑名单文本和匹配模式的文本之间存在动态空格数,则上面的正则表达式将失败。我真的很怀疑有没有一种方法可以修改regex,使其适用于上面的情况,同时保持外观落后于。(您始终可以将连续空格替换为1,但在更一般的情况下不起作用)。在
简短回答:除非所有的lookhewbed断言都具有相同的固定宽度(在您的例子中它们可能不在其中;您的示例只包含两个字母缩写,但是^{cd1>}将破坏regex)。
这是当前Python正则表达式引擎的限制。
更长的答案:
您可以编写类似于^{cd2>}的regex,根据需要用尽可能多的^{{cd3>}填充lookhe后断言的每个交替部分,以使所有这些断言的宽度相同。然而,在某些情况下,例如当段落以^{{cd4>}开头时,这将失败。
不管怎样,你这里没有使用正确的工具。最好使用为作业设计的工具,例如Natural Language Toolkit。
如果你被雷格克斯缠住了(太糟了!),然后您可以尝试使用^{{cd5>}方法,而不是^{{cd6>}:
将匹配以^{{cd3>}(可选地后跟空格)结尾的句子,并且除非前面有一个允许的缩写,否则可能不包含任何点。
^{pr2}$我不直接回答您的问题,但这篇文章应该包含足够的信息,以便您为您的问题编写一个有效的正则表达式。
你可以附加一个负面表情列表。记住,look behind是零宽度,这意味着您可以将任意多个look behind放置在彼此相邻的位置,并且您仍然从相同的位置向后看。只要你不需要使用“many”量词(例如
*
,+
,{n,}
)在后面看,一切都应该是好的(?)。在所以正则表达式可以这样构造:
有点太冗长了。不管怎样,我写这篇文章只是为了证明在一个固定字符串的列表后面查找是可能的。在
示例运行:
^{pr2}$不过,使用look-behind有一个缺点。如果黑名单文本和匹配模式的文本之间存在动态空格数,则上面的正则表达式将失败。我真的很怀疑有没有一种方法可以修改regex,使其适用于上面的情况,同时保持外观落后于。(您始终可以将连续空格替换为1,但在更一般的情况下不起作用)。在
相关问题 更多 >
编程相关推荐