假设我有一个字符串
line = "Apple is $3.00 higher than banana. Banana is cheap.I hate apple."
我通常知道 line.split(".") 可以拆分大多数句子。但是,在这种情况下,如果后面没有数字,我只想在 . 处拆分。通常,我可能会执行 re.split('\.[^0-9]', line),但我不想在拆分后丢失我的第一个字符。
这是 re.split('\.[^0-9]', line) 的输出:
['Apple is $3.00 higher than banana', 'Banana is cheap', ' hate apple.']
我们可以看到 I 被丢弃了。
请您参考如下方法:
要执行非捕获匹配,您可以使用正负先行。这些将查看下一个匹配的模式,而不会在结果中包含该模式。 下面是一个积极的前瞻示例,它将捕获 patA 后跟 patB 的所有子字符串。
注意 patA 和 patB 是正则表达式模式“变量”
patA(?=patB)
下面是一个否定前瞻的例子,它将捕获 patA 的所有子字符串,后面没有 patB。
patA(?!patB)
在您的情况下,所有不带数字的小数点都应表示为
\.(?![0-9])
