ruby - 正则表达式匹配除结束字符串之外的任何内容

标签 ruby regex

我正在尝试制作一个正则表达式来匹配除确切结尾字符串之外的任何内容,在本例中为扩展名“.exe”。

名为文件的示例:

  1. 'foo'(无扩展名)我想得到'foo'
  2. 'foo.bar' 我想得到 'foo.bar'
  3. 'foo.exe.bar' 我要得到'foo.exe.bar'
  4. 'foo.exe1' 我要得到'foo.exe1'
  5. 'foo.bar.exe' 我要得到'foo.bar'
  6. 'foo.exe' 我要得到'foo'

到目前为止,我创建了正则表达式 /.*\.(?!exe$)[^.]*/ 但它不适用于情况 1 和 6。

最佳答案

您可以使用正数 lookahead .

^.+?(?=\.exe$|$)
  • ^ 字符串开始
  • .+?greedily匹配一个或多个字符...
  • (?=\.exe$|$) 直到文字 .exe 出现在末尾。如果没有,比赛结束。

See demo at Rubular.com

关于ruby - 正则表达式匹配除结束字符串之外的任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35048830/

相关文章:

php - 在 Javascript 正则表达式中排除文字反斜杠

regex - 用于从对话中删除所有日期时间的正则表达式

arrays - 我如何找到阵列中的间隙?

ruby - 在 Padrino/Datamapper 应用程序中读取 boolean 值时出现问题

ruby - 将 latin1 字符串转换为 utf8?

php - 编写正则表达式以在 laravel 项目中查找翻译

python - 使用 python 正则表达式查找以逗号分隔的键=值对,但将引号部分保留在一起

Ruby 将字符串转换为方法名

ruby - 如何从 Ruby 中的上一行中删除换行符?

javascript - 使用正则表达式获取div内的部分文本