如何找到與solaris10上的正則表達式匹配的子串的索引?獲取solaris上子串的索引
1
A
回答
1
goto選項對我來說是bash,awk和perl。我不確定你想要做什麼,但是三者中的任何一個都可能運作良好。例如:
f=somestring
string=$(expr match "$f" '.*\(expression\).*')
echo $string
1
您標記了一個問題,慶典,所以我將假設你問如何在bash腳本做到這一點。不幸的是,內置的正則表達式匹配不保存字符串索引。但是,如果你以提取匹配子問這個,你很幸運:
if [[ "$var" =~ "$regex" ]]; then
n=${#BASH_REMATCH[*]}
while [[ $i -lt $n ]]
do
echo "capture[$i]: ${BASH_REMATCH[$i]}"
let i++
done
fi
這段代碼將依次輸出的所有子匹配。第一個(索引0)將是整個比賽。
雖然您可能會更喜歡您的awk
選項。有一個功能match
它給你你想要的索引。文檔可以找到here。如果你需要的話,它還會在RLENGTH
中存儲比賽的長度。要在bash腳本實現這一點,你可以這樣做:
match_index=$(echo "$var_to_search" | \
awk '{
where = match($0, '"$regex_to_find"')
if (where)
print where
else
print -1
}')
有很多的方式來處理與傳遞變量到awk中。這種管道輸出的組合直接將其嵌入awk單線內是相當常見的。您也可以使用-v
選項給awk變量值(請參閱man awk
)。
顯然你可以修改它來獲得長度,匹配字符串,無論你需要什麼。您可以捕獲多東西放進如果有必要的數組變量:
match_data=($(... awk '{ ... print where,RLENGTH,match_string ... }'))
2
假設你想要的是使用bash找到字符串通配符的第一場比賽的位置,下面的bash函數返回了這一點,或空,如果通配符不匹配:
function match_index() { local pattern=$1 local string=$2 local result=${string/${pattern}*/} [ ${#result} = ${#string} ] || echo ${#result} }
例如:
$ echo $(match_index "a[0-9][0-9]" "This is a a123 test") 10
如果你想允許全面的正則表達式,而不是僅僅通配符,更換「本地結果=」與
local result=$(echo "$string" | sed 's/'"$pattern"'.*$//')
線,但隨後你接觸到平時的shell引用問題。
0
如果您使用bash 4.x,您可以源代碼oobash。寫在bash與OO風格的字符串lib目錄下:
http://sourceforge.net/projects/oobash/
字符串是構造函數:
字符串一個ABCDA
a.indexOf一個
a。lastIndexOf一個
a.indexOf達
有許多 「辦法」 更在腳本中處理字符串的工作:
-base64Decode -base64Encode -capitalize -center
-charAt -concat -contains -count
-endsWith -equals -equalsIgnoreCase -reverse
-hashCode -indexOf -isAlnum -isAlpha
-isAscii -isDigit -isEmpty -isHexDigit
-isLowerCase -isSpace -isPrintable -isUpperCase
-isVisible -lastIndexOf -length -matches
-replaceAll -replaceFirst -startsWith -substring
-swapCase -toLowerCase -toString -toUpperCase
-trim -zfill
相關問題
- 1. 獲取子字符串的索引
- 2. 獲取字符串索引
- 3. 子串索引
- 4. 獲取行索引子節點的值
- 5. GSA - 獲取索引的子集
- 6. 基於xsl/xslt中的特定索引獲取子字符串
- 7. C#獲取子串的第一個出現索引
- 8. 獲取第一個包含子字符串的索引?
- 9. 子串和索引
- 10. VB6子串索引
- 11. c中的子串索引#
- 12. Groovy:子串的索引?
- 13. 獲取表上LinkToAction的索引 - WD Java
- 14. 獲取軸上numpy.argmax元素的索引
- 15. 獲取第n個索引字符串
- 16. 獲取索引位置從字符串
- 17. 通過索引獲取字符串 - Java
- 18. Jquery index()方法獲取子索引
- 19. SQL查詢 - 從級別和子索引獲取父索引
- 20. Python:如何從沒有索引的字符串中獲取子串?
- 21. 獲取字符串中最後一個子串索引後的字符
- 22. Linq獲取索引
- 23. 獲取行索引
- 24. TPageControl獲取索引
- 25. BlueImp Jquery上傳 - 從data.files獲取索引
- 26. 在原則實體上獲取索引
- 27. 子索引成字符串
- 28. 如何在php頁面上搜索並獲取子字符串?
- 29. 獲取查詢命中索引 - 搜索字符串的前綴
- 30. ArrayList,獲取值,從索引()到索引()