Regex “需要帮助转换”;“时髦”;至$a55y“;使用正则表达式?
单词开头的任何s都应转换为$ 单词中的任何s都应转换为5。您可以执行以下操作:Regex “需要帮助转换”;“时髦”;至$a55y“;使用正则表达式?,regex,Regex,单词开头的任何s都应转换为$ 单词中的任何s都应转换为5。您可以执行以下操作: /^(s)/仅选择第一个“s” /(?:[^s])(?:(s)[^s]*)+选择所有其他“s”。请注意,将跳过第一个字符(独立于); 解释:忽略第一个字符重复一个或多个:获取“s”并忽略其他非“s”的字符 下一步:您需要确定将使用哪种语言。您可以: /^(s)/仅选择第一个“s” /(?:[^s])(?:(s)[^s]*)+选择所有其他“s”。请注意,将跳过第一个字符(独立于); 解释:忽略第一个字符重复
仅选择第一个“s”李>/^(s)/
选择所有其他“s”。请注意,将跳过第一个字符(独立于);/(?:[^s])(?:(s)[^s]*)+
- 解释:
忽略第一个字符
重复一个或多个:获取“s”并忽略其他非“s”的字符李>
- 解释:
仅选择第一个“s”李>/^(s)/
选择所有其他“s”。请注意,将跳过第一个字符(独立于);/(?:[^s])(?:(s)[^s]*)+
- 解释:
忽略第一个字符
重复一个或多个:获取“s”并忽略其他非“s”的字符李>
- 解释:
下一步:您需要确定要使用的语言。要匹配单词开头的
s
,请使用\b
匹配单词边界,使用\w
匹配字母数字:
/\bs\w/
(正如@Matthew指出的,\w
确实是多余的:)
一旦你在一个单词的开头替换了所有的s
,那么剩下的就在这个单词里面了(我假设你也想用5
替换单词末尾的s
),这样你就可以简单地使用
/s/
为了完整起见,这里介绍了如何将其组合在一起(我假设使用JavaScript):
要匹配单词开头的
s
,请使用\b
匹配单词边界,使用\w
匹配字母数字:
/\bs\w/
(正如@Matthew指出的,\w
确实是多余的:)
一旦你在一个单词的开头替换了所有的s
,那么剩下的就在这个单词里面了(我假设你也想用5
替换单词末尾的s
),这样你就可以简单地使用
/s/
为了完整起见,这里介绍了如何将其组合在一起(我假设使用JavaScript):
根据语言的不同,可以用一个正则表达式捕获替换并按程序替换它们。下面是一个PHP示例:
<?php
$word = 'sassy';
preg_match_all('/\b(s)|([^s]+)|(s)/', $word, $matches, PREG_SET_ORDER);
/* captures:
* $matches = array(
* array('s','s'),
* array('a','','a'),
* array('s','','','s'),
* array('s','','','s'),
* array('y','','y')
* )
*/
$newword = '';
foreach ($matches as $m){
if ($m[1]) $newword .= '$'; # leading s --> $
elseif ($m[2]) $newword .= $m[2]; # not an s --> as-is
else $newword .= '5'; # any other s --> 5
}
echo $newword;
根据语言的不同,可以用一个正则表达式捕获替换并按程序替换它们。下面是一个PHP示例:
<?php
$word = 'sassy';
preg_match_all('/\b(s)|([^s]+)|(s)/', $word, $matches, PREG_SET_ORDER);
/* captures:
* $matches = array(
* array('s','s'),
* array('a','','a'),
* array('s','','','s'),
* array('s','','','s'),
* array('y','','y')
* )
*/
$newword = '';
foreach ($matches as $m){
if ($m[1]) $newword .= '$'; # leading s --> $
elseif ($m[2]) $newword .= $m[2]; # not an s --> as-is
else $newword .= '5'; # any other s --> 5
}
echo $newword;
@David您的第二个示例需要一个量词(
+
),否则它将仅选择位于第二位置的s。/^(s)/
将仅选择输入开头的s
,而不是单词的开头。@David.s
仍将匹配's',并命中第一个字符(如果尚未替换),所以在我看来,这仍然是错误的。@Matt问题是,不存在这样的例子。我不知道@Coffee想要什么。@David空格也是^s
,所以…:D@David您的第二个示例需要一个量词(+
),否则它将只选择位于第二个位置的s。/^(s)/
将只选择输入开头的s
,而不是单词的开头。@David.s
仍将匹配's',并命中第一个字符(如果它尚未被替换),所以在我看来,这仍然是错误的。@Matt问题是,不存在这样的例子。我不知道@Coffee想要什么。@David空格也是^s
,所以…:我知道我会后悔问这个问题,但是“为什么?”你可以做两次,第一次用“$”替换“s”(空格-s),第二次用“5”替换“s”…@Cephron你可能是说/\bs/
表示分词,而不是空格。空格-s与输入的开头不匹配。@Mitch 2 l33t3n up h1z$a55ine55。我知道我会后悔问这个问题,但是“为什么?”你可以做两次,第一次用“$”替换“s”(空格-s),第二次用“5”替换“s”。@Cephron你可能是说/\bs/
表示断字,而不是空格。空格-s与输入的开头不匹配。@Mitch 2 l33t3n up h1z$a55ine55。为什么要使用\w
?如果“单词”只是“s”
,那该怎么办?这是一个正确的观点。我可以用\B
来代替,但是一个1个字符的单词是OP没有指定的一种特殊情况。我的问题是“为什么要麻烦指定某些东西必须跟在首字母s
后面呢?对于你的例子,我们关心的只是替换首字母“s”,是吗?为什么要使用\w
?如果“单词”只是”s呢“
?这是一个正确的观点。我可以用\B
来代替,但是1个字符的单词是OP没有指定的一种特殊情况。我的问题是“为什么要麻烦指定某些东西必须跟在首字母s
后面呢?对于你的例子,我们关心的只是替换首字母“s”,是吗?