首页 > 解决方案 > 返回破折号后跟单个字符

问题描述

这按预期工作:

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

回报:

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

但我正在寻找 1 个字符,然后是破折号。预期的输出是:

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

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

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

但它返回了相同的 3 个结果。我如何返回前 2 个?

标签: regexgrep

解决方案


你需要锚点:

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

演示


你问'如果我需要 5 个字符在破折号的左边怎么办?

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

在这种情况下,如果你想要 5,你会使用:

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

推荐阅读