正则表达式隔离文本正文中的特定单词直到分隔符

时间:2015-08-19 06:36:51

标签: php regex

我有以下特定输出,我希望从中排除并包括“#34; industry" (无论哪种情况)和子字符串直到下一个分隔符通常" |"。我从API获得$输出因此$ output的内容总是不同,但通用表达式可能是这样的:blah blah blah | industry = industry info |等等等等等等。如果输出中存在行业这个词,我想获得行业=行业信息。是否有通用正则表达式可以做到这一点?我返回的具体输出是:

<?php

$output = '{{other uses|UBS (disambiguation)}} {{Use dmy dates|date=April  
2015}} {{Infobox company |name = UBS Group AG |logo = [[File:UBS 
Logo.svg|200px|UBS Group AG Logo]] |type = [[Aktiengesellschaft]] 
([[Aktiengesellschaft|AG]])
[[Public company]] |traded_as = {{SWX|UBSG}} {{SWX|UBSN}}
{{nyse|UBS}} |foundation=1854 |predecessor = [[Union Bank of 
Switzerland]] and [[Swiss Bank Corporation]] merged in 1998;  
[[PaineWebber]] merged in 2000 |location = [[Zürich]]
[[Basel]] |key_people = [[Axel A. Weber]] (Chairman){{br}}[[Sergio   
Ermotti]] (CEO) {{br}} |area_served = Worldwide |industry =[[Banking]], 
[[Financial services]] |products = [[Investment Banking]]
[[Investment Management]] [[Wealth Management]] [[Private Banking]]
[[Commercial Bank|Corporate Banking]]
[[Private Equity]]
[[Finance and Insurance]]
[[Retail Banking|Consumer Banking]]
[[Mortgage loans|Mortgages]]
[[Credit Cards]] |revenue = {{Increase}} [[Swiss franc|CHF]]28.027  
billion (2014) |operating_income = {{Decrease}} CHF2.461 billion (2014) 
{{cite web|title=UBS Annual Report 
2014|url=http://www.ubs.com/global/en/about_ubs/
investor_relations/annualreporting/2014/_jcr_content/par/
columncontrol_0/col1/linklist/link.1899571414.file/
bGluay9wYXRoPS9jb250ZW50L2RhbS9zdGF0aWMvZ2xvYmFsL2ludmV
zdG9yX3JlbGF0aW9ucy9hbm51YWwyMDE0L2FubnVhbC1yZXBv
cnQtZ3JvdXAtMjAxNC1lbi5wZGY=/annual-report-group-2014-      
en.pdf|publisher=UBS.com|accessdate=May 3, 2015}} 
|assets = {{Increase}} CHF1.062 trillion (2014) |equity = {{Increase}} 
CHF54.368 billion (2014) |num_employees = {{Decrease}} 60,155 (2014) 
|caption=We Will Not Rest |homepage = [https://www.ubs.com/ UBS.com] }}  
'''UBS AG''' is a Swiss global [[financial services]] company, 
incorporated in the [[Canton of Zurich]],{{cite web|title=Trade Register: 
UBS AG|url=http://www.moneyhouse.ch/en/u/ubs_ag_CH-270.3.004.646-4.htm}}   
and co-headquartered in [[Zürich]] and [[Basel]].{{cite 
web|url=https://www.ubs.com/global/en/about_ubs/
investor_relations/faq/about.html|title=Corporate information - UBS 
Global topics|work=ubs.com|accessdate=March 29, 2015}} The company 
provides [[investment banking]], [[asset management]], and [[wealth 
management]] services for private, corporate, and institutional clients 
worldwide, and for retail clients in Switzerland as well.{{cite 
web|url=https://www.ubs.com/global/en/about_ubs/
investor_relations/our_businesses.html|title=Our clients & businesses -   
UBS Global topics|work=ubs.com|
accessdate=March 29, 2015}} The name ''UBS'' was originally an 
abbreviation for the [[Union Bank of Switzerland]], but it ceased to be a 
representational abbreviation after the bank's merger with [[Swiss Bank 
Corporation]] in 1998. The company traces its origins to 1856, when the 
earliest of its predecessor banks was founded.{{cite web|title=150 years 
of banking tradition|url=https://www.ubs.com/global/en/about_ubs/
about_us/history/_jcr_content/rightpar/
teaser_0/linklist/link.651908116.file/
bGluay9wYXRoPS9jb250ZW50L2RhbS91YnMvZ2xvY
mFsL2Fib3V0X3Vicy9hYm91dF91cy9oaXN0b3J5X29mX3
Vicy8xNTBfeWVhcnNfb2ZfYmFua2luZ19FTkcucGRm/
150_years_of_banking_ENG.pdf|work=ubs.com|
accessdate=March 29, 2015}} UBS is the biggest
bank in Switzerland, operating in more than 50 
countries with about 60,000 employees around the world, as of 2014.{{cite 
web|title=About us: UBS in a few 
words|url=https://www.ubs.com/global/en/
about_ubs/about_us/ourprofile.html|work=ubs.com}} It is considered the 
world's largest manager of private wealth assets, with over [[Swiss 
franc|CHF]]2.2 trillion in invested assets,J.P.Morgan Cazenove Europe';
?>

2 个答案:

答案 0 :(得分:1)

[^|]*\bindustry\b[^|]*

试试这个。参见demo.Use i标志。

https://regex101.com/r/uF4oY4/79

这将匹配从string |industry之后开始的|

$re = "/[^|]*\\bindustry\\b[^|]*/i"; 
$str = "{{other uses|UBS (disambiguation)}} {{Use dmy dates|date=April  \n2015}} {{Infobox company |name = UBS Group AG |logo = [[File:UBS \nLogo.svg|200px|UBS Group AG Logo]] |type = [[Aktiengesellschaft]] \n([[Aktiengesellschaft|AG]])\n[[Public company]] |traded_as = {{SWX|UBSG}} {{SWX|UBSN}}\n{{nyse|UBS}} |foundation=1854 |predecessor = [[Union Bank of \nSwitzerland]] and [[Swiss Bank Corporation]] merged in 1998;  \n[[PaineWebber]] merged in 2000 |location = [[Zürich]]\n[[Basel]] |key_people = [[Axel A. Weber]] (Chairman){{br}}[[Sergio   \nErmotti]] (CEO) {{br}} |area_served = Worldwide |industry =[[Banking]], \n[[Financial services]] |products = [[Investment Banking]]\n[[Investment Management]] [[Wealth Management]] [[Private Banking]]\n[[Commercial Bank|Corporate Banking]]\n[[Private Equity]]\n[[Finance and Insurance]]\n[[Retail Banking|Consumer Banking]]\n[[Mortgage loans|Mortgages]]\n[[Credit Cards]] |revenue = {{Increase}} [[Swiss franc|CHF]]28.027  \nbillion (2014) |operating_income = {{Decrease}} CHF2.461 billion (2014) \n{{cite web|title=UBS Annual Report \n2014|url=http://www.ubs.com/global/en/about_ubs/\ninvestor_relations/annualreporting/2014/_jcr_content/par/\ncolumncontrol_0/col1/linklist/link.1899571414.file/\nbGluay9wYXRoPS9jb250ZW50L2RhbS9zdGF0aWMvZ2xvYmFsL2ludmV\nzdG9yX3JlbGF0aW9ucy9hbm51YWwyMDE0L2FubnVhbC1yZXBv\ncnQtZ3JvdXAtMjAxNC1lbi5wZGY=/annual-report-group-2014-      \nen.pdf|publisher=UBS.com|accessdate=May 3, 2015}} \n|assets = {{Increase}} CHF1.062 trillion (2014) |equity = {{Increase}} \nCHF54.368 billion (2014) |num_employees = {{Decrease}} 60,155 (2014) \n|caption=We Will Not Rest |homepage = [https://www.ubs.com/ UBS.com] }}  \n'''UBS AG''' is a Swiss global [[financial services]] company, \nincorporated in the [[Canton of Zurich]],{{cite web|title=Trade Register: \nUBS AG|url=http://www.moneyhouse.ch/en/u/ubs_ag_CH-270.3.004.646-4.htm}}   \nand co-headquartered in [[Zürich]] and [[Basel]].{{cite \nweb|url=https://www.ubs.com/global/en/about_ubs/\ninvestor_relations/faq/about.html|title=Corporate information - UBS \nGlobal topics|work=ubs.com|accessdate=March 29, 2015}} The company \nprovides [[investment banking]], [[asset management]], and [[wealth \nmanagement]] services for private, corporate, and institutional clients \nworldwide, and for retail clients in Switzerland as well.{{cite \nweb|url=https://www.ubs.com/global/en/about_ubs/\ninvestor_relations/our_businesses.html|title=Our clients & businesses -   \nUBS Global topics|work=ubs.com|\naccessdate=March 29, 2015}} The name ''UBS'' was originally an \nabbreviation for the [[Union Bank of Switzerland]], but it ceased to be a \nrepresentational abbreviation after the bank's merger with [[Swiss Bank \nCorporation]] in 1998. The company traces its origins to 1856, when the \nearliest of its predecessor banks was founded.{{cite web|title=150 years \nof banking tradition|url=https://www.ubs.com/global/en/about_ubs/\nabout_us/history/_jcr_content/rightpar/\nteaser_0/linklist/link.651908116.file/\nbGluay9wYXRoPS9jb250ZW50L2RhbS91YnMvZ2xvY\nmFsL2Fib3V0X3Vicy9hYm91dF91cy9oaXN0b3J5X29mX3\nVicy8xNTBfeWVhcnNfb2ZfYmFua2luZ19FTkcucGRm/\n150_years_of_banking_ENG.pdf|work=ubs.com|\naccessdate=March 29, 2015}} UBS is the biggest\nbank in Switzerland, operating in more than 50 \ncountries with about 60,000 employees around the world, as of 2014.{{cite \nweb|title=About us: UBS in a few \nwords|url=https://www.ubs.com/global/en/\nabout_ubs/about_us/ourprofile.html|work=ubs.com}} It is considered the \nworld's largest manager of private wealth assets, with over [[Swiss \nfranc|CHF]]2.2 trillion in invested assets,J.P.Morgan Cazenove Europ"; 

preg_match_all($re, $str, $matches);

答案 1 :(得分:1)

我不会在像你这样的大输入字符串上应用正则表达式。正如您在正则表达式调试器中看到的那样,vks&#39;正则表达式大约有340,000个步骤来最终获取结果。

我建议先用$chks = explode("|", $output); foreach ($chks as $chk) { if (strpos($chk,'industry =') !== false) { echo $chk; } 拆分字符串,然后再搜索所需的信息。

industry =[[Banking]], 
[[Financial services]] 

} 结果:

Console.KeyAvailable

请参阅IDEONE demo