我有几行文字,每一行都以数字,粗俗的分数或字符开头。
我正在使用Regex的ICU变体。我想使用(?<=^)
来选择所有行开头白色,而不是以普通分数的数字开头。
我试过:(?<=^\s*)(?=\S)(?!\d+\/\d)
,它选择所需的空格,但对所有行不考虑任何条件。
我错过了什么?
我试过了:
^[a-zA-Z](?<=^)\s*
(?<=\R\s*)[a-zA-Z]\s*\D\s*
\s+(?=\n(?!(?:\d+ )?\d+\/\d))
^[a-zA-Z](?<=^)\s*
2条答案
按热度按时间vltsax251#
您可以用途:
它匹配行开头的空格,后面没有
digits/digits
。演示here
41zrol4v2#
如果你想“选择所有行开头白色”,那么这个模式
(?<=^\s*)(?=\S)(?!\d+\/\d)
不匹配任何东西,因为你只使用了一个持有 * 位置 * 的Assert。关于其他模式:
^[a-zA-Z](?<=^)\s*
不匹配任何东西,因为这个Assert(?<=^)
永远不会为真,因为它应该已经匹配了^[a-zA-Z]
(?<=\R\s*)[a-zA-Z]\s*\D\s*
要求存在换行符,匹配以[a-zA-Z]
开始,不匹配空格\s+(?=\n(?!(?:\d+ )?\d+\/\d))
仅当后接换行符时匹配1+空格字符,并且不考虑“以数字、普通分数或字符开头”您可以用途:
说明
^
字符串开头\h+
匹配1+水平空格字符\b
字边界(?!\d+\/\d)
负先行,Assert不是1+位/
和当前位置正右侧的一位Regex demo
或者如果只有字符a-z或右边的数字:
Regex demo