regex - 如何使用正则表达式取消标点符号、小写字母、取消空格和连字符?

标签 regex string

如果我有这样的字符串

Newsflash: The Big(!) Brown Dog's Brother (T.J.) Ate The Small Blue Egg

我如何使用正则表达式将其转换为以下内容:

newsflash-the-big-brown-dogs-brother-tj-ate-the-small-blue-egg

换句话说,标点符号被丢弃,空格被连字符代替。

最佳答案

听起来您想创建一个“URL 插件”——例如,文章标题的 URL 友好版本。这意味着您需要确保删除所有可能的非 URL 友好字符,而不仅仅是几个。您可以这样做(按顺序):

通过以下方式删除所有非字母非数字非空格字符:
将正则表达式 [^A-Za-z0-9 ] 替换为空字符串 ""

用破折号替换所有空格:
将正则表达式 \s+ 替换为字符串 "-"

通过以下方式将字符串小写:
Java s = s.toLowerCase();
JavaScript s = s.toLowerCase();
C# s = s.ToLowerCase();
Perl $s = lc($s);
Python s = s.lower()
PHP $s = strtolower($s);
ruby s = s.downcase

关于regex - 如何使用正则表达式取消标点符号、小写字母、取消空格和连字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4422843/

相关文章:

java - 如何在 Java 中比较字符串?

java - 直接调用 String 方法是否也会将该 String 存储在 String 池中?

regex - 将多个正则表达式与 "or"串在一起安全吗?

regex - 从文本文件中用一个词提取匹配的名称

python - 从Python中的多行字符串解析消息

linux - 在csh中提取字符串

string - 根据另一个文件的信息从一个文件中提取行和子字符串

regex - Linux sed - 需要帮助来弄清楚为什么模式匹配不起作用

java - Java 中的正则表达式 : find all instances of [char1] but only if they are not preceded by [char2]

python - python/pandas 中有没有办法从字符串中删除一组特定的字符