我已经看到并使用了许多插入符号的例子,因为它位于模式的开头,并且否定了方括号中的组等,但今天我发现在管道(OR)字符后使用了插入符号。这是一个例子:
([^0-9]*|^)5
所以我理解为:
Any non-numeric character zero or more times, OR ???-something-???,
then followed by the number five
所以我知道第一个插入符号是什么意思,但第二个插入符号让我有点兴奋。美元符号也以类似的方式使用,所以如果你能告诉我这个也意味着什么:
([^0-9]*|^)5[0-9]{9}([^0-9]*|$)
我将其翻译为:
Any non-numeric character zero or more times, OR ???-something-???
then followed by the number five
then nine numeric characters
then any non-numeric character zero or more times, OR ???-something-else-???
???-something-???
和??-something-else-??
意味着什么?
编辑:这是在postgres案例陈述中的完整用法:
WHEN my_field ~ '([^[[:alnum:]]]*|^)5[[:alnum:]]{9}([^[[:alnum:]]]*|$)'
THEN array_to_string(regexp_matches(my_field,'5[[:alnum:]]{9}'),'')
我用0-9简化了它......但不管怎样,整件事似乎都错了。它是从字段中提取合同号,但WHEN子句允许任何提供它的字符串后面跟着9个字母数字字符。 THEN部分简单地提取5及其前面的9个字符......
答案 0 :(得分:0)
默认情况下,插入符号^
匹配"字符串"的开头,而美元$
匹配&#34;字符串的结尾&#34;。< / p>
但是,在n
和w
modes中,^
和$
的行为会更改为匹配&#34;行的开头& #34;和#34;一行的结尾&#34;分别根据the description at the end of this linked section。
匹配&#34;字符串的开头有另一种语法&#34;和&#34;字符串的结尾&#34;无论模式如何,\A
和\Z
。