Tag: 正则表达式

检查文件是否存在使用ruby中的正则表达式

我有一个包含许多文件的文件夹。 现在我必须检查具有特定名称的文件是否存在。 为了检查文件是否存在,我使用过File.exists? 方法。 例如 File.exists? (“/home/ubuntu/vga2usb.sql”) => true 但有时文件名包含时间戳(例如20140707_vga2usb.sql)。 我想我必须使用正则表达式。 所以我厌倦了 File.exists?(“/home/ubuntu/*_vga2usb”) => false 有没有其他方法来检查文件存在。 提前致谢。

String gsub – 替换两个元素之间的字符,但保留周围的元素

假设我有以下字符串: mystring =“start / abc123 / end” 你怎么能用其他东西abc123 ,同时保留“/ start /”和“/ end”元素完好无损? 我有以下匹配模式,但它取代了整个字符串。 我希望能用123abc取代abc123 。 mystring.gsub(/start\/(.*)\/end/,”123abc”) #=> “123abc” 编辑 :开始和结束元素之间的字符可以是字母数字字符的任意组合,我改变了我的例子以反映这一点。

如何使用Ruby在文本文件中搜索完全匹配的字符串?

我生成了一个文本文件,其中包含带有响应主体的HTTP请求响应头 我想在这个文件中搜索包含Access-Control-Allow-Origin: *作为标题的响应头。 该文件包含以->开头的行的forms,以”像这样结束: -> “Access-Control-Allow-Origin: *\r\n” 如何使用if条件搜索此文本文件并在请求响应标头上方打印自定义消息? 我需要一些复杂的正则表达式吗? 使用我的代码我无法得到正确的搜索: require ‘net/http’ require ‘uri’ require ‘IPAddr’ require ‘timeout’ puts “Origin IP:\n\n” originip = gets() puts “Start IP:\n\n” startip = gets() puts “End IP:\n\n” endip = gets() (IPAddr.new(“#{startip}”)..IPAddr.new(“#{endip}”)).each do |address| begin uri = URI(“http://#{address.to_s}”) http = Net::HTTP.new(uri.host, uri.port) http.set_debug_output($stdout) request = Net::HTTP::Get.new(uri.request_uri) request.initialize_http_header({“Origin” => “#{originip}”}) response […]

正则表达式Tag-Within-Tag

我有一个相当简单的正则表达式问题,我还没有想到一个小小的个人实验。 在字符串中,我可能需要匹配几个[some characters here] 。 显而易见的方法是使用/ [ /\[.*?\]/ [ 。*? ]正则表达式来匹配[和之前]之后的任何字符。 但是,我希望能够在包含 。 这会导致问题。 如果我有以下内容: [some characters [in here] to match] 一旦到达第一个结束括号,正则表达式就会停止匹配,并且完全无法匹配语句的最后部分。 我试图通过告诉正则表达式忽略任何内部来解决问题,因此我可以稍后对剥离的内容进行匹配。 我还没有完全开始工作。 我最接近的是: /\[(.*?(?:\[.*?\])*?.*?)\]/ 这不太奏效。 我希望它能匹配任意数量的字符,以及任何内部标记(如果它们存在)。 然而,它仍然有第一个闭合支架的麻烦。 也许在正则表达式方面表现更好的人知道一个很好的解决方案。

Ruby 1.9正则表达式匹配(un)引用的键值赋值

我希望匹配shell脚本,配置文件等中的键/值赋值,这可能是也可能不是单引号,双引号或反引号引用,哪些可能有也可能没有行尾注释。 例如,我想: RAILS_ENV=production # => key: RAILS_ENV, value: production listen_address = 127.0.0.1 # localhost only by default # => key: listen_address, value: 127.0.0.1 PATH=”/usr/local/bin” # => key: PATH, value: “/usr/local/bin” (or /usr/local/bin would be fine) HOSTNAME=`cat /etc/hostname` # => key: HOSTNAME, value: `cat /etc/hostname` 如果你觉得很奇怪,它可以处理转义引号和引号内的#,但我不认为我会遇到任何问题。 如果你感觉不一样,你可以把它全部命名为-cat扩展风格和漂亮: CONFIG_LINE = %r{ (? export ){0} (? [\w-]+ ){0} […]

使用ruby scan split join with regex

我有这个字符串: @string = “Hello.My email is james@email.com and my name is James.” 我想在句号和大写字母之间添加一个空格。 我想将@string更改为: “Hello. My email is james@email.com and my name is James.” 我有以下代码: @string.scan(/.[AZ]/) # => [“.M”]

用值替换捕获,然后返回整个匹配的模式

我有一些包含JavaScript变量定义的文本(页面的HTML): var FOREGROUND_COLOR = ‘#ffffff’; var BACKGROUND_COLOR = ‘#aaaaaa’; var BORDER_COLOR = ‘#000000’; 我想使用ruby regexp模式匹配字符串内容,如/var BACKGROUND_COLOR = ‘(#.*?)’;/并用替换值( #bbbbbb )替换捕获,但随后返回整个原始模式值被替换,以便新内容 var FOREGROUND_COLOR = ‘#ffffff’; var BACKGROUND_COLOR = ‘#bbbbbb’; var BORDER_COLOR = ‘#000000’; 主要约束是模式在外部文件中定义,替换值来自数据库,内容(带有javascript的HTML页面和我想要更改的其他值)在运行时不受我的控制。 因此,当定义模式时,我不知道替换,并且当定义替换时,我不知道模式。 因此,我需要假设模式和值都给出。 简单的ruby gsub不起作用: contents.gsub(pattern, replacement) => var FOREGROUND_COLOR = ‘#ffffff’; #bbbbbb // this is the problem with simple gsub var BORDER_COLOR […]

将String转换为Regex字符串

如何将字符串转换为正则表达式字符串,正确转义所有正则表达式特定字符? 我正在使用插值来构建正则表达式字符串,以允许用户自定义正则表达式而无需触摸代码(或期望他们知道正则表达式) 例 custom_text = “Hello” my_regex = /#{custom_text}:\s*(\d+)/i 当我的代码使用它时,会产生以下正则表达式 /Hello:\s*(\d+)/i 这允许用户提供语言本地化,而不必担心弄清楚我的正则表达式的使用位置,使用方式,或者如果他们改变了某些内容,他们是否会破坏脚本。 但是,如果他们想要包括诸如Hello?这样的句点或问号之类的东西Hello? ,我可能需要先逃避他们。

如何选择带标点符号的单词并从缩写中排除句点?

我有以下Ruby Regex选择标点符号并排除作为数字一部分的句点: /\p{L}+|(?!\.\d)[[:punct:]]/ The profit was 5.2 thousand dollars. => The profit was thousand dollars. 我有一个正则表达式,可以选择缩写(美国),例如: (?:[a-zA-Z]\.){2,} The USA is located in North America 。 => USA 我想使用这些正则表达式背后的想法,以便我可以选择句子中的所有单词和标点符号,除了任何缩写中的任何句点: The USA is located in North America! => The USA is located in North America! 有关如何实现这一目标的任何想法?

ruby 1.8.7中的Regexp将检测一个4字节的Unicode字符

任何人都可以告诉我如何在ruby 1.8.7中编写ruby regexp以检测是否存在4字节的unicode字符(特别是表情符号)? 我试图处理这样一个事实: 默认情况下 ,mysql不允许存储4字节的表情符号unicode字符,现在由iOS 5使用。 谢谢!