我有下面的句子,我试图提取以“R”开头的行,提取以R开头的行的最后一个空格后的单词,然后连接第一个字母和最后一个单词
text_raw = """
FIG
ITEM PART NUMBER NOMENCLATURE
1 2 3 4 5 6 7
EFFECT
FROM TO
PER
ASSY
1
...SCREW- 102913 6600 XY14678-10
STANDARD SUBSTITUTION:
JK784678-19
SDFG12HL3H8
...PIN- 007999 8105 BHF343212WO
...PIN- 007999 8105 DF960-23H
STANDARD SUBSTITUTION:
D89SJA
R ...SEAL-CHECK 007999 2110 NAS21134-10F <<<<< this line
R SUPPLIER CODE:
R D89SJA
R FUNCTIONAL DESCRIPTION:
R THE SWING CHECK VALVE IS
R TO LOCK AIR PREVENTION
R DUE FROM THE LEAK
R COMPARTMENT.
...SCREW- 102913 6600 XY14678-10
STANDARD SUBSTITUTION:
JK784678-19
SDFG12HL3H8
...PIN- 007999 8105 BHF343212WO
...PIN- 007999 8105 DF960-23H
STANDARD SUBSTITUTION:
D89SJA
R .PROFILE BLOCK ASSY-BRAKE 445 11W3421-30 <<<<< this line
R SUPPLIER CODE:
R D89SJA
R FUNCTIONAL DESCRIPTION:
R THE BRAKE CHECK VALVE IS
R TO LOCK ANTI PREVENTION
R DUE FROM THE LEAK
R BRAKE.
"""
我能够使用以下代码获得以R开头的行
body = []
part_no = []
regex = re.compile(r"R[\s\S]*$")
for line in text_raw.split('\n'):
if regex.match(line):
print(line)
R ...SEAL-CHECK 007999 2110 NAS21134-10F
R SUPPLIER CODE:
R D89SJA
R FUNCTIONAL DESCRIPTION:
R THE SWING CHECK VALVE IS
R TO LOCK AIR PREVENTION
R DUE FROM THE LEAK
R COMPARTMENT.
R .PROFILE BLOCK ASSY-BRAKE 445 11W3421-30
R SUPPLIER CODE:
R D89SJA
R FUNCTIONAL DESCRIPTION:
R THE BRAKE CHECK VALVE IS
R TO LOCK ANTI PREVENTION
R DUE FROM THE LEAK
R BRAKE.
使用这个正则表达式,我能够正确地得到最后一个单词
body_str = "\n".join(body)
last_word = re.findall(r"[^\s]+$", body_str, re.MULTILINE)
['NAS21134-10F', '11W3421-30']
我要寻找的是,对于同时满足正则表达式“[^\s]+$”和“[^\s]+$”的行,将第一个字母和最后一个单词连接起来。 如何获得以下预期结果
['R - NAS21134-10F', 'R - 11W3421-30']
谢谢你的帮助
我认为您可以使用一个表达式来获取2个值,然后在
R -
前面加上前缀来捕获组1模式匹配:
^
字符串的开头R[^\S\r\n]
匹配{.*[^\S\r\n]
匹配整行,然后匹配没有换行符的最后一个空格(\S+)
捕获组1,匹配1+非空白字符$
字符串的结尾Regex demoPython demo
(从示例数据中删除注释)
输出
捕获}或
R
{D
时,您可以使用两个捕获组和一个字符类([RND])
相关问题 更多 >
编程相关推荐