簡體   English   中英

將字符串中的正則表達式轉換為數組

[英]regular expression on string into array

我是PHP正則表達式的新手,所以我想知道如何將下面的代碼拆分為所有“東西”都存儲在數組中?

$string = "something here (9), something here2 (20), something3 (30)";

所需結果:

$something_array = array(
[0] => something 
[1] => something2
[2] => something3 ) 

基本上刪除“,”以及括號中的所有內容。

正則表達式將如下所示: (.*?) \\([^)]*\\),? 它用 。 (任何內容),因為您是這樣要求的,但是如果是一個字,則應該改用\\ w,或者除了空格\\ S以外的任何內容,因此應該是這樣的: (\\S*) \\([^)]*\\),?

解釋表達式:

  • (.*?) -匹配任何內容,但在惰性模式或“越少越好”模式下
  • [^)]* -盡可能匹配除以外的任何內容
  • \\([^)]*\\) -匹配一對方括號及其內容
  • ,? -如果有逗號則匹配

您可以在這里測試所有這些

最后,使用preg_match_all PHP函數,它看起來像這樣:

$str = 'something (this1), something2 (this2), something3 (this3)';
preg_match_all('/(\S*) \([^)]*\),?/', $str, $matches);
print_r($matches);

我不會對此類東西使用正則表達式,而只會使用PHP的explode()函數。

$parts = explode(', ', $string);
$result = array_map(function($element) {
    return substr($element, 0, strrpos($element, ' '));
}, $parts);
print_r($result);

以上將輸出

Array
(
    [0] => something here
    [1] => something here2
    [2] => something3
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM