在标题下查找文本的最佳方法是什么



我正在做一个NLP项目,我有两种格式的输入文本。

格式 1:

Some line
Some line
Name is <name> random text and numbers.  age is <age> random text and numbers
Some line

格式 2:

Some line
Name
<name>. Random text and numbers
Some random line
Age
<age>.  random text and numbers

我想做的是从文本中提取nameage。我想编写一个适用于两种格式的标记器/正则表达式。 姓名和年龄可以在任何一行中。

目前,我想了解我可以使用的技术或库。我正在使用python-3.6,我很高兴使用任何库。

我目前的策略是: - 我打算用换行符拆分每行。 - 然后对于每一行,我都寻找(?:names is) (w).第一场比赛是 -名字。这适用于第一种格式。

我目前的名字代码是:

import re 
Pattern = '(?:names is) (w)'
Text ='...'.split('n')
for t in Text:    
Match = re.match(pattern, Text, re.I)    
if match.group(1) is not None:
Name = match.group(1)

但是,它不适用于第二种格式。你能告诉我和想法吗?

尝试:(?i)(?:name(?: is )?([^ .]+)|age(?: is )?([^ .]+))

解释:

(?i)- 标志:搜索不区分大小写

(?:...)- 非捕获组

(?: is )?- 匹配零次或一次is

([^ .]+)- 匹配(空格(或name(?: is )?([^ .]+)|age(?: is )?([^ .]+)中的一个或多个字符

name(?: is )?([^ .]+)- 交替:匹配age(?: is )?([^ .]+)或CC_14

演示

这些正则表达式可以为您工作:

"Name is (.+?)b|Namen?(.+?)b"
"Age is (.+?)b|Agen?(.+?)b"

您只需要注意检查不同的捕获组。

在这里查看它们。这同样适用于年龄。

相关内容

最新更新