Làm thế nào tôi có thể thay thế lần xuất hiện đầu tiên của một ký tự trong mỗi từ?
Nói rằng tôi có chuỗi này:
hello @jon i am @@here or @@@there and want some@thing in '@here"
# ^ ^^ ^^^ ^ ^
Và tôi muốn xóa từ đầu tiên @
trên mỗi từ để cuối cùng tôi có chuỗi cuối cùng như thế này:
hello jon i am @here or @@there and want something in 'here
# ^ ^ ^^ ^ ^
Chỉ cần làm rõ, các ký tự "@" luôn xuất hiện cùng nhau trong mỗi từ, nhưng có thể ở đầu từ hoặc giữa các ký tự khác.
Tôi đã quản lý để loại bỏ ký tự "@" nếu nó chỉ xảy ra một lần bằng cách sử dụng biến thể của biểu thức chính mà tôi tìm thấy trong chuỗi con Xóa khi nó xuất hiện một lần, nhưng không phải khi hai lần liên tiếp trong python , sử dụng giao diện phủ định và giao diện phủ định:
@(?!@)(?<!@@)
Xem đầu ra:
>>> s = "hello @jon i am @@here or @@@there and want some@thing in '@here"
>>> re.sub(r'@(?!@)(?<!@@)', '', s)
"hello jon i am @@here or @@@there and want something in 'here"
Vì vậy, bước tiếp theo là thay thế "@" khi nó xảy ra nhiều lần. Điều này thật dễ dàng bằng cách s.replace('@@', '@')
xóa "@" khỏi bất cứ nơi nào nó xảy ra lần nữa.
Tuy nhiên, tôi tự hỏi: có cách nào để thực hiện thay thế này trong một lần chụp không?
@Hello@There
nơi @
sẽ không liên tiếp?