Вам не нужно столь сложное регулярное выражение, чтобы просто отрицать //
во вводе и фиксировать китайские иероглифы, которые появляются последовательно.Для отбрасывания строк, содержащих //
, достаточно только этого (?!.*//)
отрицательного просмотра вперед, а для захвата текста на китайском языке вы можете захватить это регулярное выражение [^\u4e00-\u9fff]*([\u4e00-\u9fff]+)
, и ваше общее регулярное выражение станет таким:
^(?!.*//)[^\u4e00-\u9fff]*([\u4e00-\u9fff]+)
Где вы можете извлечь китайские символы из первого шаблона группировки.
Объяснение вышеприведенного регулярного выражения:
^
- Начало строки (?!.*//)
- Отрицательный взгляд вперед, который отбрасывает совпадение, если //
присутствует в строке где-либо впереди [^\u4e00-\u9fff]*
- Опционально соответствует нулю или большему количеству некитайских символов ([\u4e00-\u9fff]+)
- Захватывает китайские иероглифы один или несколько и затем помещает их в первый шаблон группировки.
Демо
Редактировать: Здесьпримеры кодов, показывающие, как захватывать текст из группы 1
import re
s = ' showToastByText("该功能暂未开放");'
m = re.search(r'^(?!.*//)[^\u4e00-\u9fff]*([\u4e00-\u9fff]+)',s)
if (m):
print(m.group(1))
Prints,
该功能暂未开放
Демонстрационная версия Python онлайн
Редактировать: для извлечения нескольких вхождений китайских иероглифов, как указано в коммent
Поскольку вы хотите извлечь многократные вхождения китайских символов, вы можете проверить, не содержит ли строка //
, а затем использовать findall
для извлечения всего китайского текста.Вот пример кода, демонстрирующего то же самое,
import re
arr = ['showToastByText("该功能暂未开放");','//showToastByText("该功能暂未开放");','showToastByText("未开放");','showToastByText("该功能暂xxxxxx未开放");']
for s in arr:
if (re.match(r'\/\/', s)):
print(s, ' --> contains // hence not finding')
else:
print(s, ' --> ', re.findall(r'[\u4e00-\u9fff]+',s))
Prints,
showToastByText("该功能暂未开放"); --> ['该功能暂未开放']
//showToastByText("该功能暂未开放"); --> contains // hence not finding
showToastByText("未开放"); --> ['未开放']
showToastByText("该功能暂xxxxxx未开放"); --> ['该功能暂', '未开放']
Демонстрационная версия Python онлайн