user21
user21

Reputation: 1351

replace words that starts with "(uuid: )"

I would like to replace text using javascript/regex

"TV "my-samsung" (UUID: a1c3bbc1d27c5be8:8baabe2fa7f5d9ca) is already switched off."

with

TV 'my-samsung' is already switched off.

by removing text (UUID: ) and replace " with '

Looks like regex can be used

  \([\s\S]*?\) 

https://regex101.com/r/xXDncn/1

or have also tried using replace method in JS

   str = str.replace("(UUID", "");

Upvotes: 1

Views: 591

Answers (2)

yun
yun

Reputation: 104

you can try this

str.replace(/\(.*?\)/, "")
str.replace(/\(.*?\)/, "with")

--- update ---

const str = `"TV "my-samsung" (UUID: a1c3bbc1d27c5be8:8baabe2fa7f5d9ca) is already switched off."`;
const a = str.replace(/"(.*?)\(.*\)(.*)"/, (a, b, c) => {
    return b.replace(/"/g, "'") + c
});
console.log(a); //TV 'my-samsung' is already switched off. 

Upvotes: 0

Wiktor Stribiżew
Wiktor Stribiżew

Reputation: 627190

You can use

const str = '" "Tv "my-samsung" (UUID: a1c3bbc1d27c5be8:8baabe2fa7f5d9ca) is already switched-off""';
console.log(
   str.replace(/\s*\(UUID:[^()]*\)/g, '').replace(/^[\s"]+|[\s"]+$/g, '').replaceAll('"', "'")
)

See the first regex demo. It matches

  • \s* - zero or more whitespaces
  • \(UUID: - (UUID: string
  • [^()]* - zero or more chars other than ( and )
  • \) - a ) char.

The g flag makes it replace all occurrences.

The second regex removes trailing and leading whitespace and double quotation marks:

  • ^[\s"]+ - one or more whitespaces and double quotes at the start of string
  • | - or
  • [\s"]+$ - one or more whitespaces and double quotes at the end of string.

The .replaceAll('"', "'") is necessary to replace all " with ' chars.

It is not a good idea to merge these two operations into one as the replacements are different. Here is how it could be done, just for learning purposes:

const str = '" "Tv "my-samsung" (UUID: a1c3bbc1d27c5be8:8baabe2fa7f5d9ca) is already switched-off""';
console.log(
   str.replace(/^[\s"]+|[\s"]+$|\s*\(UUID:[^()]*\)|(")/g, (x,y) => y ? "'" : "")
)

That is, " is captured into Group 1, the replacement is now a callable, where x is the whole match and y is the Group 1 contents. If Group 1 matched, the replacement is ', else, the replacement is an empty string (to remove the match found).

Upvotes: 1

Related Questions