Regex 正则表达式:选择小于4个字符的单词

Regex 正则表达式:选择小于4个字符的单词,regex,Regex,我想选择小于4个字符的单词,并在开头和结尾添加*号。例如: Hello my friend? How did you like my car? I guess that my opinion about your car is favorable. 因此,我想用以下内容替换上述内容: Hello *my* friend? *How* *did* *you* like *my* *car*? *I* guess that *my* opinion about your car *is*

我想选择小于4个字符的单词,并在开头和结尾添加*号。例如:

Hello my friend? 
How did you like my car? 
I guess that my opinion about your car is favorable. 
因此,我想用以下内容替换上述内容:

Hello *my* friend? 
*How* *did* *you* like *my* *car*? 
*I* guess that *my* opinion about your car *is* favorable. 
我正在使用以下搜索模式:\w{3,}。但事实恰恰相反。因此,选择大于3个字符的单词

试试这个:

\b\w{1,3}\b
\b是单词边界,它确保你不匹配较大单词的一部分


您可以替换为*$&*-$&替换为整个匹配。

您需要\b\w{1,3}\b。或者[B-[AZ-Z] {{1,3}\b,\b{p}{L}1,1,3}\ b. @ @ WKTROSTROBII.EW,可以,但是我的替代是:*$ 1 *,它不适用于这个。{ 3,}意味着3个字符或更多,对于3个或更少的字符,你应该使用{,3 },但是你也需要确保你不在一个词的中间选择3个字符,因此,使用@WiktorStribiżewy提供的模式,您的替换可以调整为使用对整个匹配的反向引用,$0或$&或&。替换时不需要用捕获组包装整个模式。@WiktorStribiżew我将其更改为\b\w{1,3}\b,它给出了我需要的结果。我需要这个:\b\w{1,3}\b。请更改它。之所以需要括号,是因为替换为*$1*,如果替换为*$0*,则不需要括号。既然你的问题中没有关于分组或你打算如何替换的内容,答案是正确的。这是第一百万次重复,为什么要反复回答?@Victor-不确定。我在手机上,这在当时是有意义的。顺便说一句,我认为你没有选一个好的复制品——那是关于unicode的。@WiktorStribiżew你提到了一个PHP问题。但这是一个更普遍的问题。另外,我在我的搜索引擎里找不到那么快的。所以我想可以问一下。