2

文章内の最初の場所の名前を取得しようとしています。目的の場所の名前は、最初の文の 2 番目の大文字で正確に始まり、最初のドット (.) の前で正確に終わります。

例:

 It is located at Supreme Court. Follow by some other text. 
                  ^           ^

希望するアウトプット

最高裁判所

申し訳ありませんが、これまでに取得したコードをお見せできません。1時間試した後、具体的には何も得られませんでした.

Ruby でのコード例を示していただければ幸いです。

4

5 に答える 5

4

この正規表現:

regexp = /^.*?[A-Z].*?([A-Z].*?)\./
match = regexp.match(subject)
if match
    match = match[1]
else
    match = ""
end

生産します:Supreme Court

最初の大文字に一致する文字列の先頭から開始し、他のすべてを無視します。次に、2 番目の大文字を照合し、結果を最初のドットまで後方参照 1 に保存します。

于 2011-10-14T00:09:24.367 に答える
1

これは私のために働いた:

irb(main):001:0> location = "It is located at Supreme Court. Follow by some other text."
=> "It is located at Supreme Court. Follow by some other text."
irb(main):002:0> location.match(/[^A-Za-z][\bA-Z][\w\s]*\./)
=> #<MatchData "Supreme Court.">
于 2011-10-14T00:09:31.363 に答える
1
s = 'It is located at Supreme Court. Follow by some other text.'
m = s.match /[A-Z][^A-Z]+([A-Z][^\.]+)/
result = m[1] #Supreme Court
于 2011-10-14T00:12:55.660 に答える
0

これを試して:

s = 'It is located at Supreme Court. Follow by some other text.'
/[A-Z].+?([A-Z].*)\..+?/.match(s)[1]
于 2011-10-14T00:20:28.023 に答える
0

これは、文字列の先頭にスペースがないことを前提としているため、スペースの直後にある最初の大文字を探し、最初に見つかったピリオドまで何かを取得します。

str = "It is located at Supreme Court. Follow by some other text."
m = str.match(/\s([A-Z].*?)\./)
location = m.nil? ? "" : m[1] #just in case there's no match

p location #=> Supreme Court
于 2011-10-14T00:22:34.100 に答える