Return 破折号后跟一个字符

Return dash followed by a single character

这按预期工作:

([^\u0000-\u007F])+-हा([^\u0000-\u007F])+

Returns:

ब-हाणपूर
ब-हाणी
बनियन-हाफ

但我要查找 1 个字符后跟破折号。预期输出为:

ब-हाणपूर
ब-हाणी

我试过用这样的字符数替换 + 号...

([^\u0000-\u007F]){1}-हा([^\u0000-\u007F])+

但它 return 得到了相同的 3 个结果。我如何 return 前 2 个?

您需要锚点:

^([^\u0000-\u007F])-हा([^\u0000-\u007F])+$

Demo


你问了'What if I need 5 characters to the left of dash?'

所写的正则表达式部分 [^\u0000-\u007F] 匹配符合该标准的 单个字符 。如果您想要多于或少于一个,请使用 regex quantifier 描述您想要的数量。

在这种情况下,如果您想要 5 个,您将使用:

^([^\u0000-\u007F]{5})-हा([^\u0000-\u007F])+$

大概是这样的:

^([^\u0000-\u007F]){1}-हा([^\u0000-\u007F])+

^([^\u0000-\u007F]{1})-हा([^\u0000-\u007F]+)

(\b[^\u0000-\u007F]{1})-हा([^\u0000-\u007F]+)

Regex demo