当前位置: 首页 > 知识库问答 >
问题:

用下划线替换字符串中的所有非字母数字字符

邢曦
2023-03-14

我想用x(下划线)替换特殊字符(regex\W),但我不想用下划线替换空白,也不想用单个下划线替换多个连续的特殊字符

示例字符串:the/Sun is red@输出:The_Sunred_

字符串://黑月亮输出:\u黑月亮

我试过echo'string'| sed's/\W//g',但并不准确

共有3个答案

钱飞翼
2023-03-14

仅使用bash参数展开,与其他答案类似:

shopt -s extglob
for str in "The/Sun is red@" ".//hack Moon"; do 
    echo "${str//+([^[:alnum:][:blank:]])/_}"
    # .........^^........................^  replace all
    # ...........^^.....................^    one or more
    # .............^^^^^^^^^^^^^^^^^^^^^      non-alnum, non-space character
done
The_Sun is red_
_hack Moon
侯池暝
2023-03-14

使用tr

echo "The/Sun is red@" | tr -s -c [:alnum:][:blank:] _

[: alnum:][:空白:]表示字母数字字符和空格,-c表示相反的意思。

添加-s将重复的下划线压缩为一个。

颜霖
2023-03-14

se方法:

s="The/Sun is red@ .//hack Moon"

sed -E 's/[^[:alnum:][:space:]]+/_/g' <<<"$s"
The_Sun is red_ _hack Moon
  • [^[:alnum:][:space:][]-匹配除字母数字和空格外的任何字符序列
 类似资料:
  • 问题内容: 我有一个字符串,我想用一个星号替换任何不是标准字符或数字的字符,例如(az或0-9)。例如,“ h ^&ell`。,| ow] {+ orld”被替换为“ h * ell * o * w * orld”。请注意,多个字符(例如“ ^&”)将替换为一个星号。我将如何去做呢? 问题答案: 正则表达式可以解救! 例:

  • 问题内容: 我尝试使用此功能,但没有成功- 问题答案: 使用。 注意:删除了空格,因为通常不将其视为字母数字。

  • 这应该只得到数字和返回,但不做它作为预期的!有什么建议吗?

  • 嗨,我正在尝试从一个字符串中替换所有的非字母数字字符,如下所示: 第一个问题是它不能替换字符串中的等字符。 其次,我想在这个方法中添加对所有用户语言的多点支持。 我怎么能那样做? 多谢帮忙。

  • 我有一个字符串“ECET”,我想创建所有可能的字符串,其中我用“X”替换一个或多个字母(除第一个外)。 在这种情况下,我的结果是: 关于如何处理这个问题有什么想法吗? 这不仅仅是创建“X”的可能组合/排列,还包括如何将它们与现有字符串组合。

  • 问题内容: 我正在编写python MapReduce字数统计程序。问题是数据中散布着许多非字母字符,我发现这篇文章从Python的字符串中剥离了除了字母数字字符之外的所有内容,这显示了使用正则表达式的一个很好的解决方案,但是我不确定如何实现它 恐怕我不确定该如何使用该库甚至正则表达式。我不确定如何将正则表达式模式正确地应用于传入的字符串(书的一行)以检索没有任何非字母数字字符的新行。 有什么建议