php - preg_match_all - regexp javascript
你如何創建一個字符串來匹配正則表達式? (2)
(?:...)
具有與(...)
相同的分組效果,但不會“捕獲”該組的內容; 見http://php.net/manual/en/regexp.reference.subpatterns.php 。
所以, (?:\#|/)
意思是“ #
或/
”。
我猜你知道[^ ]*
表示“零個或多個不是SP的字符”,而[^]]*
表示“零個或多個不是右方括號的字符”。
把它放在一起,一個可能的字符串是這樣的:
'{[/abcd asdfasefasdc]}'
我需要創建一個格式化文檔。 我知道用於格式化正則表達式的正則表達式,但我不知道如何重現該正則表達式的示例。 這個應該是一個內部的聯繫:
'{\[((?:\#|/)[^ ]*) ([^]]*)\]}'
任何人都可以創建一個與此相匹配的例子,也許可以解釋他是如何得到它的。 我被困在'?'。
我從來沒有在開始時使用這個元字符,通常我用它來標記一個文字不能出現或只出現一次。
謝謝
我認為這是一個很好的職位來幫助設計正則表達式。 雖然它相當容易寫一個
一般的正則表達式來匹配一個字符串,有時候它的幫助在後面翻看
其設計。 有時候有必要看看bizzar會匹配什麼。
當把許多元字符混合成文字時,對格式來說相當重要
這些便於閱讀和避免錯誤。
這裡有一些在Perl中的示例(對我來說)更容易原型。
my @samps = (
'{[/abcd asdfasefasdc]}',
'{[# ]}',
'{[# /# \/]}',
'{[/# {[
| /# {[#\/} ]}',
,
);
for (@samps) {
if (m~{\[([#/][^ ]*) ([^]]*)\]}~)
{
print "Found: '$&'\ngrp1 = '$1'\ngrp2 = '$2'\n===========\n\n";
}
}
__END__
Expanded
\{\[
(
[#/][^ ]*
)
[ ]
(
[^\]]*
)
\]\}
產量
Found: '{[/abcd asdfasefasdc]}'
grp1 = '/abcd'
grp2 = 'asdfasefasdc'
===========
Found: '{[# ]}'
grp1 = '#'
grp2 = ''
===========
Found: '{[# /# \/]}'
grp1 = '#'
grp2 = '/# \/'
===========
Found: '{[/# {[
| /# {[#\/} ]}'
grp1 = '/# {[
|'
grp2 = '/# {[#\/} '
===========