我必須在shell腳本中編寫一個正則表達式來獲取另一個字符串中的字符串,以便我的變量字符串myString
出現在正則表達式字符串中。我怎樣才能做到這一點?在bash中的正則表達式中的字符串變量?
1
A
回答
-1
2
如果你想在雙引號中提取文本,並假設只有有一對雙引號,這樣做的一個方法是:
[[email protected]]$ echo $A
to get "myString" in regular expression
[[email protected]]$ echo $A | sed -n 's/.*"\(.*\)".*/\1/p'
myString
當然,如果只有一組引號你也可以不用SED /正則表達式:
[[email protected]]$ echo $A | cut -d'"' -f2
myString
+0
不錯:)。我知道了。 – Larry
0
>echo 'hi "there" ' | perl -pe 's/.*(["].*["])/\1/g'
"there"
1
如果你知道只會有一組雙引號的,你可以使用shell parameter expansion這樣的:
zsh> s='to get "myString" in regular expression'
zsh> echo ${${s#*\"}%\"*}
mystring
的bash不支持多級擴展,所以擴展需求相繼被應用:
bash> s='to get "myString" in regular expression'
bash> s=${s#*\"}
bash> s=${s%\"*}
bash> echo $s
mystring
0
您還可以使用 'AWK':
echo 'this is string with "substring" here' | awk '/"substring"/ {print}'
# awk '/"substring"/ {print}' means to print string, which contains regexp "this"
0
在bash中,你可以在[[ ... ]] conditional construct中使用=〜運算符,與BASH_REMATCH variable一起使用。使用
例子:
TEXT='hello "world", how are you?'
if [[ $TEXT =~ \"(.*)\" ]]; then
echo "found ${BASH_REMATCH[1]} between double quotes."
else
echo "nothing found between double quotes."
fi
相關問題
- 1. 從javascript中的字符串變量創建正則表達式
- 2. 字符串中的PHP正則表達式自定義變量
- 3. 正則表達式 - 字符串中的變量名稱
- 4. 使用正則表達式在變量中驗證字符串
- 5. 在perl中連接變量和字符串正則表達式
- 6. 正則表達式在javascript - 正則表達式中的變量
- 7. 正則表達式 - 限制字符串中的字符數量
- 8. 正則表達式(正則表達式) - 一個字符串變量長度
- 9. 正則表達式 - 避免在表達式中的字符串
- 10. 的Python:使用字符串變量如在正則表達式
- 11. 從字符串,正則表達式中提取變量?
- 12. 將變量插入到正則表達式字符串中
- 13. 正則表達式的正則表達式的Java字符串
- 14. 正則表達式匹配字符串變量字符
- 15. 正則表達式匹配bash變量
- 16. 在字符串中提取增量數的正則表達式
- 17. Java UIMA:正則表達式中的正則表達式變量?
- 18. Python的正則表達式的變量字符串
- 19. 正則表達式(正則表達式)的子字符串
- 20. 在bash shell中匹配正則表達式的字符串的子串
- 21. 在bash中使用正則表達式的字符串中的多個匹配
- 22. Bash正則表達式:用任意數量的字符替換字符串
- 23. 的grep一個字符串變量和正則表達式
- 24. 解析帶正則表達式的變量字符串
- 25. JavaScript的正則表達式與變量字符串不工作
- 26. 正則表達式來替換包含變量的字符串
- 27. 從正則表達式的字符串獲取變量
- 28. JMeter的正則表達式不處理字符串變量和「$」
- 29. 的Javascript變量替換字符串正則表達式
- 30. 字符串變量的正則表達式問題
如果你告訴更多你想要做什麼,這將有助於。 「take myString」是什麼意思?做myString改變,什麼是你希望匹配的表達式的上下文中的常量? – CharlesB
@CharlesB我編輯了我的問題。你可以看一下嗎? – Larry
*「myString是一個常量字符串」* ...除非我在這裏丟失了某些東西,如果您匹配一個常量字符串,則不需要正則表達式。你是否試圖提取雙引號內的所有內容?雙引號之外的文本是否保持不變? –