我的输入字符串如下所示:
Employee: Joe Banana
Department: Sales
Location: New York
Bla bla bla
Note:
even more bla
这个正则表达式提取全名,即Joe Banana
(?s).*(?-s)(?m)^\s*(Employee): .*\s(.*)$(?-m)(?s).*(?-s)(?m)^\s*(Note):$(?-m)(?s).*
但是这不适用于名字,而是提取部门:
(?s).*(?-s)(?m)^\s*(Employee): (.*)\s.*$(?-m)(?s).*(?-s)(?m)^\s*(Note):$(?-m)(?s).*
为什么这些正则表达式不提取名字和姓氏?
我需要继续搜索这些群组,因为我们需要在注意后停止搜索:
答案 0 :(得分:2)
你走了:
Employee:\s*(?P<employee>.+)[\n\r]
Department:\s*(?P<department>.+)
请参阅a demo on regex101.com(并注意不同的修饰符!)
答案 1 :(得分:1)
尝试这一个,第一个匹配组是第二个匹配组的第一个名称:
^员工(M +):\ S +(W +)\ S +(W +)
或在你的正则表达式中用(w +)\ s +(w +)替换(。*):
- ^ \ S (员工)(S')。(S')(M +): \ S(W +)\ S +(W +)$ - ( - S')^ \ S *(注)(M +)(S')。(M +):$( - 米)(αS)*
答案 2 :(得分:0)
我想出了这个
FIRSTNAME
(?s).*(?-s)(?m)^\s*(Employee): (.*?)\s.*$(?-m)(?s).*(?-s)(?m)^\s*(Note):$(?-m)(?s).*
LASTNAME
(?s).*(?-s)(?m)^\s*(Employee): .*?\s(.*)$(?-m)(?s).*(?-s)(?m)^\s*(Note):$(?-m)(?s).*
答案 3 :(得分:0)
如果你使用它,第一个捕获组将是第一个名称,第二个将是姓氏:
Employee:\s+(\w+)\s+(\w+)