如果一個字符串包含代表任何字符的.
,則索引不匹配它。該怎麼做才能使.
成爲任何角色?索引參數包含。 perl
對於離,
index($str, $substr)
如果$substr
包含.
任何地方,指數總是會返回-1
感謝
頌歌
如果一個字符串包含代表任何字符的.
,則索引不匹配它。該怎麼做才能使.
成爲任何角色?索引參數包含。 perl
對於離,
index($str, $substr)
如果$substr
包含.
任何地方,指數總是會返回-1
感謝
頌歌
那是不可能的。該documentation說:
爲內另一個字符串索引功能搜索,但沒有 一個完整的正則表達式模式匹配的通配符的行爲。
...
的關鍵字,您可以使用進一步googlings是:
更新:
如果你只是想要知道,如果你的字符串匹配,使用正則表達式可能看起來像這樣:
my $string = "Hello World!";
if($string =~ /ll. Worl/)
{
print "Ahoi! Position: ".($-[0])."\n";
}
這是匹配單個字符。
$ - [0]是匹配整個 開始的字符串的偏移量。
- http://perldoc.perl.org/perlvar.html
如果你想有一個模式,即是匹配的arbitary字符的arbitary量,你可以選擇一個模式像...
...
if($string =~ /ll.*orl/)
{
...
爲見perlvar有關特殊perl變量的更多信息。你會在那裏找到變量@LAST_MATCH_START
和關於$-[0]
的一些解釋。還有其他幾個變量,可以幫助您查找子匹配並收集其他關於匹配的交互信息...
我需要知道第一次出現$ pattern的位置或子串 – carol
嘿,卡羅爾,編輯答案,包含有關事件的信息:) –
順便說一句 - 我只是注意到你的個人資料,你通常不會選擇一個答案。我想請你這樣做; D –
從perldoc -f index
,你可以看到index()
沒有任何正則表達式語法:
index STR,SUBSTR
The index function searches for one string within another, but without the wildcard-like behavior of a full regular-
expression pattern match. It returns the position of the first occurrence of SUBSTR in STR at or after POSITION. If
POSITION is omitted, starts searching from the beginning of the string. POSITION before the beginning of the string or after
its end is treated as if it were the beginning or the end, respectively. POSITION and the return value are based at 0 (or
whatever you've set the $[ variable to--but don't do that). If the substring is not found, "index" returns one less than the
base, ordinarily "-1"
一個簡單的測試:
$ perl -e 'print index("1234567asdfghj.","j.")'
13
使用正則表達式:
$str =~ /$substr/g;
$index = pos();
我需要知道第一次出現$ substr或substring的位置,因爲它可能在$ str中不止一次 – carol
$ substr =「。AMBSDF」 $ str =「KFSDkfslsdfsBAMBSDFdkf」 $ str中的第12個位置,總是$ strtr在$ str中找到的第一個字符 – carol