Регулярка для поиска данных в тексте.

123 4
C
На сайте с 22.08.2012
Offline
106
#11
Sly32 :

на выходе должно быть так:

Mountain View, CA, USA;  Atlanta, GA, USA;  Boulder, CO, USA;  Chicago, IL, USA;  New York, NY, USA;  Los Angeles, CA, USA;  San Francisco, CA, USA;  Washington D.C., DC, USA; 

San Francisco, CA, USA;  Boulder, CO, USA;  Los Angeles, CA, USA; California, USA; Colorado, USA

https://regex101.com/r/mbL8FS/1

regex101: build, test, and debug regex
regex101: build, test, and debug regex
  • Firas Dib
  • regex101.com
Regular expression tester with syntax highlighting, explanation, cheat sheet for PHP/PCRE, Python, GO, JavaScript, Java, C#/.NET, Rust.
VG
На сайте с 30.04.2017
Offline
86
#12

USA ни везде есть))

C
На сайте с 22.08.2012
Offline
106
#13
VadimGen #:

USA ни везде есть))

185-207Mountain View, CA, USA
209-225Atlanta, GA, USA
227-243Boulder, CO, USA
245-261Chicago, IL, USA
263-280New York, NY, USA
282-302Los Angeles, CA, USA
304-326San Francisco, CA, USA
328-352Washington D.C., DC, USA
622-644San Francisco, CA, USA
646-662Boulder, CO, USA
664-684Los Angeles, CA, USA
705-720California, USA
722-735Colorado, USA


где нет?

VG
На сайте с 30.04.2017
Offline
86
#14
chaturanga #:

где нет?

не ясно выразился.

в исходниках:

Please submit your resume in English - we can only consider applications submitted in this language.

Note: Google’s hybrid workplace includes remote roles

Remote location: Brazil.
C
На сайте с 22.08.2012
Offline
106
#15
VadimGen #:

не ясно выразился.

в исходниках:

Please submit your resume in English - we can only consider applications submitted in this language.

Note: Google’s hybrid workplace includes remote roles

Remote location: Brazil.

А, обсуждение не читал :)

Тогда без шансов, только по словарю.

C
На сайте с 22.08.2012
Offline
106
#16

Ну или если мы гарантированно знаем, что "префикс" строки содержит "location.*:", то делать а-ля https://regex101.com/r/LCOGoA/1

Но сплитить группу всё-равно придётся. На условном php

$str = "This role may also be located in our Playa Vista, CA campus.Note: By applying to this position you will have an opportunity to share your preferred working location from the following: Mountain View, CA, USA; Atlanta, GA, USA; Boulder, CO, USA; Chicago, IL, USA; New York, NY, USA; Los Angeles, CA, USA; San Francisco, CA, USA; Washington D.C., DC, USA.
This role may also be located in our Playa Vista, CA campus.Note: Google’s hybrid workplace includes remote and in-office roles. By applying to this position you will have an opportunity to share your preferred working location from the following:In-office locations: San Francisco, CA, USA; Boulder, CO, USA; Los Angeles, CA, USA.Remote location(s): California, USA; Colorado, USA.
Please submit your resume in English - we can only consider applications submitted in this language.
Note: Google’s hybrid workplace includes remote roles
Remote location: Brazil.";
$pattern = "/(location.*?:)([a-zA-Z ,;\.]*)([\.;])/";
$split = array();
if(preg_match_all($pattern, $str, $matches))
  foreach($matches[2] as $val)
    $split = array_merge($split, explode(";", $val));

  print_r($split);
regex101: build, test, and debug regex
regex101: build, test, and debug regex
  • Firas Dib
  • regex101.com
Regular expression tester with syntax highlighting, explanation, cheat sheet for PHP/PCRE, Python, GO, JavaScript, Java, C#/.NET, Rust.
S3
На сайте с 29.03.2012
Offline
319
#17
chaturanga #:

Ну или если мы гарантированно знаем, что "префикс" строки содержит "location.*:", то делать а-ля https://regex101.com/r/LCOGoA/1

Но сплитить группу всё-равно придётся. На условном php

я уже писал - сплиты не подходят, нужно вычленить только регуляркой. Мой вариант работает, но искал еще варианты

C
На сайте с 22.08.2012
Offline
106
#18
Sly32 #:

я уже писал - сплиты не подходят, нужно вычленить только регуляркой. Мой вариант работает, но искал еще варианты

Здесь и вычленяется регуляркой, сплитится уже вычленение.

Из этого вычленения также можно всё достать второй регуляркой вместо сплита. Но одной сделать не получится - текст слишком "неоднородный".

VG
На сайте с 30.04.2017
Offline
86
#19

без split и explode )))

$q = 'This role may also be located in our Playa Vista, CA campus.Note: By applying to this position you will have an opportunity to share your preferred working location from the following: Mountain View, CA, USA; Atlanta, GA, USA; Boulder, CO, USA; Chicago, IL, USA; New York, NY, USA; Los Angeles, CA, USA; San Francisco, CA, USA; Washington D.C., DC, USA.
This role may also be located in our Playa Vista, CA campus.Note: Google’s hybrid workplace includes remote and in-office roles. By applying to this position you will have an opportunity to share your preferred working location from the following:In-office locations: San Francisco, CA, USA; Boulder, CO, USA; Los Angeles, CA, USA.Remote location(s): California, USA; Colorado, USA.
Please submit your resume in English - we can only consider applications submitted in this language.
Note: Google’s hybrid workplace includes remote roles
Remote location: Brazil.';


preg_match_all('/location.*?:([a-zA-Z ,;\.]*)[\.;]/', $q, $m);

$r = [];
foreach ($m[1] as $v) {
    $v = trim($v);
    $s = 0;
    while (($p = strpos($v, ';', $s)) !== false) {
        $location = trim(substr($v, $s, $p - $s));
        if ($location !== '') {
            $r[] = $location;
        }
        $s = $p + 1;
    }
    $location = trim(substr($v, $s));
    if ($location !== '') {
        $r[] = $location;
    }
}

print_r($r);

S3
На сайте с 29.03.2012
Offline
319
#20
VadimGen #:
'/location.*?:([a-zA-Z ,;\.]*)[\.;]/'

Я к сожалению не могу полагаться на  "locations",  нет гарантии что это скрипт а не контентщик) А в таком случае мне может прилететь  "locations, lacations, lacotion" etc ))) Я вообще не могу на текст полагаться, только на шаблон, что будет что то типа [city, state, country[,;]], причем в словах могут быть точки и пробелы - Vashingthon D.C.

123 4

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий