gpt4 book ai didi

用于临床试验领域的 Python 正则表达式

转载 作者:行者123 更新时间:2023-12-01 03:04:09 26 4
gpt4 key购买 nike

我正在尝试将临床试验文本拆分为字段列表。这是一个示例文档:https://obazuretest.blob.core.windows.net/stackoverflowquestion/NCT00000113.txt 。所需输出的形式为:[[Date:<date>],[URL:<url>],[Org Study ID:<id>],...,[Keywords:<keywords>]]

我正在使用re.split(r"\n\n[^\s]", text)在以空格以外的字符开头的段落处进行拆分(以避免在字段内的缩进段落处进行拆分)。这一切都很好,只是结果字段(第一个字段除外)都缺少第一个字符。不幸的是,无法使用 string.partition用正则表达式。

我可以通过使用 re.findall(r"\n\n[^\s]", text) 查找第一个字符来添加它们,但这需要对整个文本进行第二次迭代(并且看起来很笨拙)。

我认为使用 re.findall 是有意义的使用一些匹配所有字段的正则表达式,但我陷入困境。 re.findall(r"[^\s].+\n\n")只匹配单行字段。

我对正则表达式不太有经验,所以如果这个问题的答案很容易在其他地方找到,我深表歉意。感谢您的帮助!

最佳答案

您可以使用正向前瞻而不是否定字符类:

re.split(r"\n\n(?=\S)", text)

现在,如果后面跟着一个非空白字符,它只会匹配 2 个换行符。

此外,如果可能有 2 个或更多换行符,最好使用 {2,} 限制量词:

re.split(r"\n{2,}(?=\S)", text)

请参阅Python demo和一个regex demo .

关于用于临床试验领域的 Python 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43565115/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com