No ha especificado el comportamiento con respecto al contenido que no sea "foo" y "bar" o las repeticiones de uno en ausencia del otro. por ejemplo, ¿Debe "foo d" o "barra de bar ian" coincidencias?
Suponiendo que desea hacer coincidir cadenas que contengan solo una instancia de "foo" o "bar", pero no las dos y no varias instancias de la misma, sin importar nada más en la cadena (es decir, " "fósforos" y "bárbaro" no coinciden), entonces podría usar una expresión regular que devuelva el número de coincidencias encontradas y solo considerarla exitosa si se encuentra exactamente una coincidencia. por ejemplo, en Perl:
@matches = ($value =~ /(foo|bar)/g) # @matches now hold all foos or bars present
if (scalar @matches == 1) { # exactly one match found
...
}
Si se permite que múltiples repeticiones de la misma diana (es decir, "bárbaro" partidos), entonces este mismo enfoque general podría ser utilizado por luego caminar la lista de coincidencias para ver si los partidos son todas repeticiones del mismo texto o si la otra opción también está presente.
¿Sería foofoobar sea un partido, ya que contiene " foo "y" foobar "? ¿Qué tal "foonbar"?¿Podría proporcionar ejemplos de coincidencias y no coincidencias? –
Partidos: "foo", "bar" nonmatches: "foofoo" "barfoo" "foobarfoo" "barbar" "barfoofoo" – SocialCensus
Si usted no quiere "foofoo" a la altura, entonces' No estoy hablando realmente de una exclusiva o. – cjm