2024-04-19 21:59:06 发布
网友
我有一个字符串,看起来像这样:
\nInhaltse / techn. Angaben*\n\nAQUA • COCO-GLUCOSIDE • COCOSULFATE • SODIUM\n\n\
我需要得到一个点与点之间的项目列表,如下所示:
AQUA COCO-GLUCOSIDE COCOSULFATE SODIUM
我尝试过regex和其他工具,但我找不到正确的、灵活的答案
*flexible=列表可能包含1到N个元素
您应该更好地定义什么是可能性,以及您要应用哪些规则。 我认为像这样的规则,任何单词至少只有两个大写字符或破折号加空格或\n',可能对您有用。如果是这样的话,这是你的正则表达式:
import re my_string = "\nInhaltse / techn. Angaben*\n\nAQUA • COCO-GLUCOSIDE • COCOSULFATE • SODIUM\n\n" print(re.findall(r"(?<=\n|\s)[A-Z-]{2,}(?=\n|\s)", my_string))
输出:
['AQUA', 'COCO-GLUCOSIDE', 'COCOSULFATE', 'SODIUM']
下面是你如何阅读正则表达式的:
(?<=\n|\s)表示前面有(?<=)新行(\n)或(|)空格(\s)[A-Z-\s]{2,}表示至少两个({2,})大写字母、破折号和空格([A-Z-\s])(?=\n|\s)表示后跟(?=)新行(\n)或(|)空格(\s)
(?<=\n|\s)
?<=
\n
|
\s
[A-Z-\s]{2,}
{2,}
[A-Z-\s]
(?=\n|\s)
?=
或者为了更好地满足您的要求:
get a list of the items between dots
您可以使用:
r"(?<=\n\n|\•\s)[A-Z-\s]{2,}(?=\n\n|\s\•)"
也就是说:
at least 2 uppercase letters, dash or spaces, preceded by two new line or a dot and a space and followed by two new lines or a space and a dot
您应该更好地定义什么是可能性,以及您要应用哪些规则。
我认为像这样的规则,任何单词至少只有两个大写字符或破折号加空格或\n',可能对您有用。如果是这样的话,这是你的正则表达式:
输出:
下面是你如何阅读正则表达式的:
(?<=\n|\s)
表示前面有(?<=
)新行(\n
)或(|
)空格(\s
)[A-Z-\s]{2,}
表示至少两个({2,}
)大写字母、破折号和空格([A-Z-\s]
)(?=\n|\s)
表示后跟(?=
)新行(\n
)或(|
)空格(\s
)或者为了更好地满足您的要求:
您可以使用:
也就是说:
相关问题 更多 >
编程相关推荐