我有这个例子:
<title>Square Meters | Dragon White (en)</title>
我想使用正则表达式来选择所有内容,|
但不|
包括(...之间)
我的两个正则表达式也选择了|
,这就是为什么我需要一个更好的公式,没有那个|
搜索:\w+.*\|
或 \w+.*?[\s\S]\|
这是我的 Python 代码中的一行,我必须对正则表达式进行一些更改:
words = re.findall(r'\w+', new_filename)
现在的结果是square-meters-dragon-white-en.html
但预期的结果应该是:square-meters.html
这是包含 Python 代码的部分:
new_filename = title.get_text()
new_filename = new_filename.lower()
words = re.findall(r'\w+', new_filename)
new_filename = '-'.join(words)
new_filename = new_filename + '.html'
print(new_filename)
如果我以这种方式改变正则表达式,我会非常接近:(?=\w+).*(?= \|)
words = re.findall(r'(?=\w+).*(?= \|)', new_filename)
我得到了:(square meters.html
但没有小破折号)
答案1
简单使用:[^|]+
# 1 或多个任何非管道字符,这也会选择换行符。
如果不想选择换行,请使用:[^|\r\n]+
。
这将在任何支持正则表达式的文本编辑器中工作。
答案2
谢谢@Toto
- Ctrl+F
- 找什么:
\b\w+\b(?=[\w\s]+\|)
- 查看 环绕
- 查看 正则表达式
- Find All in Current Document
对于您的 Python 代码,请使用以下行进行更改:
words = re.findall(r'\b\w+\b(?=[\w\s]+\|)', new_filename)