我有两个具有以下结构的字符串。
1 ABCD: PQRS XYZ
2 qwerty-asd zxc
我需要删除“:”和“-”之后的所有字符 我尝试了以下代码。 我想要一个综合的解决方案,请为此提供帮助。
m = re.sub(r'^-(.*?)', "" ,tags)
print(m)
n = re.sub(r'^:(.*?)', "" ,m)
print(n)
答案 0 :(得分:2)
不要费心更换:
或-
之后的所有东西,只需取走之前的东西即可。
import re
li = ['1 ABCD: PQRS XYZ', '2 qwerty-asd zxc']
regex = re.compile(r'(.*)[:|-]')
for string in li:
print(regex.search(string).group(1))
输出
1 ABCD
2 qwerty
答案 1 :(得分:0)
好的。
import re
r = re.compile('[-:].+$')
for text in [
"1 ABCD: PQRS XYZ",
"2 qwerty-asd zxc",
]:
print(r.sub('', text))
输出
1 ABCD
2 qwerty
答案 2 :(得分:0)
正则表达式的“ OR”符号为|
:
n = re.sub(r'^:|-(.*?)', "" ,m)
print(n)
答案 3 :(得分:0)
IIUC,您需要
tags = 'Name: Raunaq'
m = re.sub(r'[-:](.*)', '', tags)
print (m)
输出-'Name:'
答案 4 :(得分:0)
您可以使用slicing
和index
函数,而无需使用其他模块。像:
value1 = "ABCD: PQRS XYZ"
value2 = "qwerty-asd zxc"
result1 = value1[:value1.index(":")]
result2 = value2[:value2.index("-")]
答案 5 :(得分:0)
您可以使用public static string encrypt(string str){
for(int i = 0; i < str.length(); i++){
int x = str.charAt(i) ;
x = x + 1;
}
和function updatePost($id , $title, $content, $date, $groups)
{
$connection = mysqli_connect(DataBaseManager::HOST, DataBaseManager::USER, DataBaseManager::PASSWORD, DataBaseManager::DATABASENAME);
$sqlCommand = "UPDATE posts
SET title = '$title', content = '$content', date = '$date' , groups = '$groups'
WHERE id == 1";
if ($connection->query($sqlCommand) === TRUE) {
echo "Record updated successfully";
} else {
echo "Error updating record: " . $connection->error;
}
$connection->close();
}
分别获取str.index(':')
和str.index('-')
的第一个匹配项的索引。然后,您可以使用切片将它们以及其他所有东西剥离。
:
答案 6 :(得分:0)
您可以使用简单的解决方案,而无需使用re
模块:
def remove_after(string: str, token: str) -> str:
return string[:string.index(token)]
proper_string = remove_after('1 ABCD: PQRS XYZ', ':')
答案 7 :(得分:0)
我创建了一个方法,该方法将使用字符串和需要分隔的字符。
def strip_off(s, charr):
if charr in s:
return s[:s.index(charr)]
else:
return charr, " not present in ", s
s1 = '1 ABCD: PQRS XYZ'
s2 = '2 qwerty-asd zxc'
print(strip_off(s1, ":"))
print(strip_off(s2, "-"))
输出:
1 ABCD
2 qwerty